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.
41 lines
1.0 KiB
41 lines
1.0 KiB
3 years ago
|
import { Database } from "./database.mjs";
|
||
|
import { PawSQLiteError } from "./pawsqlite_error.mjs";
|
||
|
import { enableDebug } from "./log.mjs";
|
||
|
|
||
|
// Adapters
|
||
|
import { PSQLAdapter } from "./adapters/cordova_pawsqlite/psql_adapter.mjs";
|
||
|
import { WebSQLAdapter } from "./adapters/websql/websql_adapter.mjs";
|
||
|
|
||
|
|
||
|
export default {
|
||
|
open: async function(dbName, options = {}) {
|
||
|
const adapter = getAdapter(options.adapter);
|
||
|
|
||
|
let db = new Database(dbName, adapter);
|
||
|
await db.open();
|
||
|
return db;
|
||
|
},
|
||
|
delete: function(dbName, options = {}) {
|
||
|
const adapter = getAdapter(options.adapter);
|
||
|
|
||
|
return adapter.delete(dbName);
|
||
|
},
|
||
|
debug: enableDebug,
|
||
|
Error: PawSQLiteError
|
||
|
};
|
||
|
|
||
|
|
||
|
function getAdapter(adapterName) {
|
||
|
if (!adapterName) {
|
||
|
adapterName = "pawsqlite";
|
||
|
} else {
|
||
|
adapterName = adapterName.toLowerCase();
|
||
|
}
|
||
|
if (adapterName === "pawsqlite") {
|
||
|
return PSQLAdapter;
|
||
|
} else if (adapterName === "websql") {
|
||
|
return WebSQLAdapter;
|
||
|
} else {
|
||
|
throw new PawSQLiteError(`Unknown Adapter: ${adapterName}`);
|
||
|
}
|
||
|
}
|