69 lines
2.1 KiB
JavaScript
69 lines
2.1 KiB
JavaScript
const assert = require("assert");
|
|
const Stray = require("./stray");
|
|
const establishedDatabase = require("../database/database");
|
|
const pythonShell = require("python-shell");
|
|
|
|
class StrayRepository {
|
|
constructor(database) {
|
|
this.database = database || establishedDatabase;
|
|
this.queries = {
|
|
read: "SELECT * FROM stray_eps WHERE id = ?",
|
|
readAll: "SELECT id, name, season, episode, verified FROM stray_eps",
|
|
readAllFiltered:
|
|
"SELECT id, name, season, episode, verified FROM stray_eps WHERE verified = ",
|
|
checkVerified: "SELECT id FROM stray_eps WHERE verified = 0 AND id = ?",
|
|
verify: "UPDATE stray_eps SET verified = 1 WHERE id = ?"
|
|
};
|
|
}
|
|
|
|
read(strayId) {
|
|
return this.database.get(this.queries.read, strayId).then(row => {
|
|
assert.notEqual(
|
|
row,
|
|
undefined,
|
|
`Could not find list with id ${strayId}.`
|
|
);
|
|
return row;
|
|
});
|
|
}
|
|
|
|
readAll(verified = null) {
|
|
let dbSearchQuery = this.queries.readAll;
|
|
if (verified != null) {
|
|
dbSearchQuery = this.queries.readAllFiltered + verified.toString();
|
|
}
|
|
return this.database.all(dbSearchQuery).then(rows =>
|
|
rows.map(row => {
|
|
const stray = new Stray(row.id);
|
|
stray.name = row.name;
|
|
stray.season = row.season;
|
|
stray.episode = row.episode;
|
|
stray.verified = row.verified;
|
|
return stray;
|
|
})
|
|
);
|
|
}
|
|
|
|
verifyStray(strayId) {
|
|
return this.database.get(this.queries.checkVerified, strayId).then(row => {
|
|
assert.notEqual(row, undefined, `Stray '${strayId}' already verified.`);
|
|
|
|
const options = {
|
|
pythonPath: "../app/env/bin/python3",
|
|
args: [strayId]
|
|
};
|
|
|
|
pythonShell.run("../app/moveSeasoned.py", options, (err, results) => {
|
|
if (err) throw err;
|
|
// TODO Add error handling!! StrayRepository.ERROR
|
|
// results is an array consisting of messages collected during execution
|
|
console.log("results: %j", results);
|
|
});
|
|
|
|
return this.database.run(this.queries.verify, strayId);
|
|
});
|
|
}
|
|
}
|
|
|
|
module.exports = StrayRepository;
|