49 lines
1.6 KiB
JavaScript
49 lines
1.6 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.SqlRepository = void 0;
|
|
const fs_1 = require("fs");
|
|
const sqlite3_1 = require("sqlite3");
|
|
const sql_queries_1 = require("./sql_queries");
|
|
const sql_helpers_1 = require("./sql_helpers");
|
|
class SqlRepository {
|
|
db;
|
|
constructor() {
|
|
this.db = new sqlite3_1.Database("age.db");
|
|
this.db.exec((0, fs_1.readFileSync)("age.sql").toString(), err => {
|
|
if (err != undefined)
|
|
throw err;
|
|
});
|
|
}
|
|
async saveResult(r) {
|
|
return await new sql_helpers_1.TransactionHelper()
|
|
.add(sql_queries_1.insertPerson, { $name: r.name })
|
|
.add(sql_queries_1.insertCalculation, {
|
|
$age: r.age, $years: r.years, $nextage: r.nextage
|
|
})
|
|
.add(sql_queries_1.insertResult, {
|
|
$name: r.name,
|
|
$age: r.age, $years: r.years, $nextage: r.nextage
|
|
})
|
|
.run(this.db);
|
|
}
|
|
getAllResults($limit) {
|
|
return this.executeQuery(sql_queries_1.queryAllSql, { $limit });
|
|
}
|
|
getResultsByName($name, $limit) {
|
|
return this.executeQuery(sql_queries_1.queryByNameSql, { $name, $limit });
|
|
}
|
|
executeQuery(sql, params) {
|
|
return new Promise((resolve, reject) => {
|
|
this.db.all(sql, params, (err, rows) => {
|
|
if (err == undefined) {
|
|
resolve(rows);
|
|
}
|
|
else {
|
|
reject(err);
|
|
}
|
|
});
|
|
});
|
|
}
|
|
}
|
|
exports.SqlRepository = SqlRepository;
|