openDatabase
Result<
Open a sql.js database.
If path points to an existing file, loads it.
Otherwise creates a new empty database.
Changes are persisted to path on save and close.
Implementation
Result<Database, String> openDatabase(
String path, {
required SqlJsRuntime sqlJs,
}) {
try {
final fileExists = _fs.existsSync(path);
// sql.js is in-memory; WAL and busy_timeout do not apply.
// Enable foreign keys for referential integrity.
final jsDb =
(fileExists
? sqlJs.databaseConstructor.callAsConstructor<SqlJsDatabase>(
_fs.readFileSync(path),
)
: sqlJs.databaseConstructor.callAsConstructor<SqlJsDatabase>())
..run('PRAGMA foreign_keys = ON');
return Success(_createDatabase(jsDb, path));
} catch (e) {
return Error('Failed to open database: $e');
}
}