openDatabase abstract method

Future<SdbDatabase> openDatabase(
  1. String name, {
  2. SdbOpenDatabaseOptions? options,
  3. @Deprecated('Use options instead') int? version,
  4. @Deprecated('Use options instead') SdbOnVersionChangeCallback? onVersionChange,
  5. @Deprecated('Use options instead') 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,

  /// Compat, version
  @Deprecated('Use options instead') int? version,

  /// Compat, onVersionChange
  @Deprecated('Use options instead')
  SdbOnVersionChangeCallback? onVersionChange,

  /// Compat, schema
  @Deprecated('Use options instead') SdbDatabaseSchema? schema,
});