You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
1.7 KiB
76 lines
1.7 KiB
import sqlite3 from 'sqlite3' |
|
import bcrypt from 'bcryptjs' |
|
import ErrorType from '../error/types.error.js' |
|
import serverConfig from '../configuration/server.config.js' |
|
|
|
sqlite3.verbose() |
|
|
|
const tableName = 'Config' |
|
|
|
class Config { |
|
constructor(options = {}) { |
|
this.id = options.id |
|
this.startingDateRaid = options.startingDateRaid |
|
} |
|
|
|
static find() { |
|
return new Promise((resolve, reject) => { |
|
const db = openDB() |
|
db.serialize(() => { |
|
db.all(`SELECT * FROM ${tableName}`, (err, configs) => { |
|
if (err) reject(new Error(ErrorType.TECHNICAL_UNKNOWN)) |
|
else { |
|
if (configs.length) { |
|
const config = createConfigFromDB(configs[0]) |
|
resolve(config); |
|
} else reject(new Error(ErrorType.TECHNICAL_UNKNOWN)) |
|
} |
|
}) |
|
closeDB(db) |
|
}) |
|
}) |
|
} |
|
|
|
async update() { |
|
return new Promise((resolve, reject) => { |
|
const db = openDB(); |
|
db.serialize(() => { |
|
db.run(`UPDATE ${tableName} SET startingDateRaid = ${this.startingDateRaid} WHERE id = ${this.id}`, err => { |
|
if (err) reject(new Error(ErrorType.TECHNICAL_UNKNOWN)) |
|
else resolve() |
|
}) |
|
}) |
|
closeDB(db) |
|
}) |
|
} |
|
|
|
toJson() { |
|
return { |
|
id: this.id, |
|
startingDateRaid: this.startingDateRaid |
|
} |
|
} |
|
} |
|
|
|
export default Config |
|
|
|
function openDB() { |
|
const env = process.env.NODE_ENV || 'development' |
|
return new sqlite3.Database(serverConfig.database[env].path, err => { |
|
if (err) throw new Error(err) |
|
}) |
|
} |
|
|
|
function closeDB(db) { |
|
db.close(err => { |
|
if (err) throw new Error(err) |
|
}) |
|
} |
|
|
|
function createConfigFromDB(dbUser) { |
|
return new Config({ |
|
id: dbUser.id, |
|
startingDateRaid: dbUser.startingDateRaid |
|
}) |
|
} |
|
|
|
|