1. @override
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);
  }
}