createDatabase method

  1. @override
Future<DatapodDatabase> createDatabase(
  1. DatabaseConfig dbConfig,
  2. ConnectionConfig connConfig, {
  3. ConnectionConfig? migrationConnConfig,
})
override

Creates a new DatapodDatabase instance using the provided configuration.

Implementation

@override
Future<DatapodDatabase> createDatabase(
  DatabaseConfig dbConfig,
  ConnectionConfig connConfig, {
  ConnectionConfig? migrationConnConfig,
}) async {
  // For SQLite, the 'database' or a plugin specific 'path' would be the file path.
  final path = connConfig.database ?? ':memory:';

  final db = sqlite.sqlite3.open(path);
  final mainConnection = SqliteConnection(db);

  SqliteConnection? migrationConnection;
  if (migrationConnConfig != null) {
    final migrationPath = migrationConnConfig.database ?? path;
    // SQLite opens separate connections to the same file fine
    final migrationDb = sqlite.sqlite3.open(migrationPath);
    migrationConnection = SqliteConnection(migrationDb);
  }

  return SqliteDatabase(
    dbConfig.name,
    mainConnection,
    migrationConnection: migrationConnection,
  );
}