import * as sqlite3 from 'sqlite3' import { SQLCommon } from "./interfaces" export class SqliteDB implements SQLCommon { private db : sqlite3.Database; public constructor(private readonly dbName: string) { this.db = new sqlite3.Database(this.dbName); } async run(query: string): Promise { return new Promise((resolve, reject) => { this.db.run(query, (result : sqlite3.RunResult, err: Error) => { if (err) { // TODO Winston should handle this console.log(err) throw err } else { if (result != null) { resolve(result.changes) } else { resolve(0) } } }) }) } async runParameterized(query: string, parameters: any[]): Promise { return new Promise((resolve, reject) => { this.db.run(query, parameters, (result : sqlite3.RunResult, err: Error) => { if (err) { // TODO Winston should handle this console.log(err) throw err } else { if (result != null) { resolve(result.changes) } else { resolve(0) } } }) }) } async getAll(query: string): Promise { return new Promise((resolve, reject) => { this.db.all(query, (err: Error, rows: Object[]) => { if (err) { // TODO Winston should handle this console.log(err) throw err } else { console.log("Got rows") resolve(rows) } }) }) } getAllParameterized(query: string, parameters: any[]): Promise { return new Promise((resolve, reject) => { this.db.all(query, parameters, (err: Error, rows: Object[]) => { if (err) { // TODO Winston should handle this console.log(err) throw err } else { resolve(rows) } }) }) } }