openDatabase

Result<Database, String> openDatabase(

  1. String path, {
  2. required SqlJsRuntime sqlJs,
})

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