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