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.
47 lines
971 B
47 lines
971 B
import sqlite3 from "sqlite3"; |
|
|
|
import { NodeAdapterError } from "./node_adapter_error.mjs"; |
|
import { QueryWrapper } from "./query_wrapper.mjs"; |
|
import { log } from "./log.mjs"; |
|
|
|
|
|
export class DatabaseWrapper { |
|
constructor(dbName) { |
|
this.dbName = dbName; |
|
} |
|
|
|
open() { |
|
return new Promise((resolve, reject) => { |
|
const db = new sqlite3.Database( |
|
this.dbName, |
|
sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE, |
|
(err) => { |
|
if (err) { |
|
reject(NodeAdapterError.from(err)); |
|
return; |
|
} |
|
this.db = db; |
|
resolve(); |
|
} |
|
); |
|
}); |
|
} |
|
|
|
close() { |
|
return new Promise((resolve, reject) => { |
|
this.db.close((err) => { |
|
if (err) { |
|
reject(NodeAdapterError.from(err)); |
|
return; |
|
} |
|
resolve(); |
|
}); |
|
}); |
|
} |
|
|
|
sql(sql, ...args) { |
|
const query = new QueryWrapper(sql, ...args); |
|
return query.execute(this.db); |
|
} |
|
|
|
} |