prepareDatabase method
Future<void>
prepareDatabase(
)
Implementation
Future<void> prepareDatabase() async {
_logger.finest('Initializing database.');
// await clean();
final lastMigration = await run((connection) async {
try {
await tables.migration.createTable(connection);
return await tables.migration.queryLastVersion(connection);
} catch (e, stackTrace) {
_logger.severe('Error during migration', e, stackTrace);
rethrow;
}
});
_logger.fine('Last migration: $lastMigration');
if (lastMigration > 0 && lastMigration < 3) {
_logger.warning('Recreating database.');
await clean();
await run((conn) async {
await tables.migration.createTable(conn);
});
}
final migrationRun = clock.now().toUtc();
await run((conn) async {
final migrations = this.migrations.migrations;
for (final migration in migrations) {
if (migration.id > lastMigration) {
_logger.fine('Running migration ${migration.id} '
'(${migration.versionCode})');
await migration.up(conn);
await tables.migration.insertMigrationRun(
conn, migrationRun, migration.id, migration.versionCode);
}
}
});
// _database = config.database();
// final client = _database.sqlClient;
// _logger.finest('Running migration.');
// await client.runInTransaction((t) async {
// final result = await client.run(
// SqlSourceBuilder()
// ..write('CREATE TABLE IF NOT EXISTS ')
// ..identifier(_TABLE_MIGRATE)
// ..write(' (')
// ..identifier(_COLUMN_ID)
// ..write(' id PRIMARY KEY SERIAL, ')
// ..identifier(_TABLE_MIGRATE_APPLIED_AT)
// ..write(' timestamp without time zone')
// ..identifier(_TABLE_MIGRATE_VERSION)
// ..write('INT NOT NULL)'),
// );
// });
// final table = _database.sqlClient.table('authpass_migration');
// _database.collection(_TABLE_MIGRATE).document('1');
}