mgm
Version:
My generic modules
42 lines (31 loc) • 950 B
JavaScript
const ThreadLocal = require('../tool/ThreadLocal');
class DataBase {
constructor() {
}
createSchema(pathToSql) {
if (!fs.existsSync(pathToSql)) {
fs.writeFileSync(pathToSql, ';');
}
let statements = fs.readFileSync(pathToSql).toString().replace(/\r\n/g, '').replace(/\s{4}/g, '').split(';').filter(value => { return value !== ''; });
statements.forEach(statemt => {
this.update([statemt]);
});
}
runSql(sql) {
return ThreadLocal.get('db').query(sql.join(''));
}
query(sql) {
return this.runSql(sql);
}
unique(sql) {
let result = this.query(sql);
if (result.length > 1) {
throw new Error('the query must return only one value');
}
return result[0];
}
update(sql) {
this.runSql(sql);
}
}
module.exports = new DataBase();