77 lines
2.4 KiB
TypeScript
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)
|
|
}
|
|
})
|
|
})
|
|
}
|
|
|
|
} |