openDatabase abstract method

Future<SdbDatabase> openDatabase(
  1. String name, {
  2. SdbOpenDatabaseOptions? options,
  3. int? version,
  4. SdbOnVersionChangeCallback? onVersionChange,
  5. SdbDatabaseSchema? schema,
})
inherited

Open a database.

name is the path of the database. version is the version of the database. If the existing database has a lower version, onVersionChange will be called. onVersionChange is called when the database is created or upgraded. schema provides an automatic way to handle version changes.

Either onVersionChange or schema should be provided for schema definition and migration.

Example:

class SchoolDb {
  final schoolStore = SdbStoreRef<String, SdbModel>('school');
  final studentStore = SdbStoreRef<int, SdbModel>('student');

  /// Index on studentStore for field 'schoolId'
  late final studentSchoolIndex = studentStore.index<String>(
    'school',
  ); // On field 'schoolId'
  late final schoolDbSchema = SdbDatabaseSchema(
    stores: [
      schoolStore.schema(),
      studentStore.schema(
        autoIncrement: true,
        indexes: [studentSchoolIndex.schema(keyPath: 'schoolId')],
      ),
    ],
  );

  Future<SdbDatabase> open(SdbFactory factory, String dbName) async {
    return factory.openDatabase(
      dbName,
      options: SdbOpenDatabaseOptions(
        version: 1,
        schema: schoolDbSchema,
      ),
    );
  }
}

Implementation

Future<SdbDatabase> openDatabase(
  String name, {

  /// Options for opening a Sdb database (prefer options over version and schema).
  SdbOpenDatabaseOptions? options,

  /// The version of the database, prefer options
  int? version,

  /// compat: provide onVersionChange to handle schema changes or initialization
  /// Prefer options
  SdbOnVersionChangeCallback? onVersionChange,

  /// compat: provide a schema to have it applied automatically.
  /// Prefer options
  SdbDatabaseSchema? schema,
});