Future
upgrade(int versionNumber, List<String> commands, { bool temporary: false })
Source
@override
Future upgrade(int versionNumber, List<String> commands,
{bool temporary: false}) async {
await _createVersionTableIfNecessary(temporary);
var connection = await getDatabaseConnection();
try {
await connection.transaction((ctx) async {
var existingVersionRows = await ctx.query(
"SELECT versionNumber, dateOfUpgrade FROM $versionTableName WHERE versionNumber=@v:int4",
substitutionValues: {"v": versionNumber});
if (existingVersionRows.length > 0) {
var date = existingVersionRows.first.last;
throw new MigrationException(
"Trying to upgrade database to version $versionNumber, but that migration has already been performed on $date.");
}
for (var cmd in commands) {
logger.info("$cmd");
await ctx.execute(cmd);
}
await ctx.execute(
"INSERT INTO $versionTableName (versionNumber, dateOfUpgrade) VALUES ($versionNumber, '${new DateTime.now().toUtc().toIso8601String()}')");
});
} on PostgreSQLException catch (e) {
throw _interpretException(e);
}
}