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.
 

49 lines
1.1 KiB

import { NodeAdapterError } from "./node_adapter_error.mjs";
import { DatabaseWrapper } from "./database_wrapper.mjs";
import { ResponseWrapper } from "./response_wrapper.mjs";
import { enableDebug, log } from "./log.mjs";
const databases = new Map();
export const PawSQLiteNodeAdapter = {
name: "PawSQLiteNodeAdapter",
open: async (dbName) => {
if (!databases.has(dbName)) {
const db = new DatabaseWrapper(dbName);
await db.open();
databases.set(dbName, db);
}
return ResponseWrapper.success();
},
close: async (dbName) => {
const db = getDatabase(dbName);
await db.close();
databases.delete(dbName);
return ResponseWrapper.success();
},
sql: async (dbName, sql, ...args) => {
const db = getDatabase(dbName);
const result = await db.sql(sql, ...args);
return ResponseWrapper.success(result);
},
delete: async (dbName) => {
throw new NodeAdapterError("Delete not implemented");
},
debug: enableDebug
};
function getDatabase(dbName) {
const db = databases.get(dbName);
if (!db) {
throw new NodeAdapterError("Database not open");
}
return db;
}