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); } }