Breadbot/src/utilties/storage/sqlite.ts

77 lines
2.4 KiB
TypeScript

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<number> {
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<number> {
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<Object[]> {
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<Object[]> {
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)
}
})
})
}
}