A Node.js adapter for PawSQLite
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.
|
|
|
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);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|