Java源码示例:org.flywaydb.core.api.MigrationState
示例1
/**
* Retrieves the full set of infos about future migrations applied to the DB.
*
* @return The future migrations. An empty array if none.
*/
private List<MigrationInfo> future(MigrationInfo[] migrationInfos) {
if (migrationInfos.length == 0)
throw new NotFoundException();
List<MigrationInfo> futureMigrations = Lists.newArrayList();
for (MigrationInfo migrationInfo : migrationInfos) {
if ((migrationInfo.getState() == MigrationState.FUTURE_SUCCESS)
|| (migrationInfo.getState() == MigrationState.FUTURE_FAILED)) {
futureMigrations.add(migrationInfo);
}
}
return futureMigrations;
}
示例2
private void assertAllMigrationsAre(MigrationState expectedState) {
for (MigrationInfo migrationInfo : flyway.info().all()) {
assertThat(migrationInfo.getState()).isEqualTo(expectedState);
}
}
示例3
@Test
public void skipAutomaticAndTriggerManualFlywayMigration() {
assertAllMigrationsAre(MigrationState.PENDING);
flyway.migrate();
assertAllMigrationsAre(MigrationState.SUCCESS);
}
示例4
public void init(HibernateStorageSettings settings) {
try {
readWriteLock.writeLock().lock();
migrationRequired = false;
sfUpdateRequired = false;
flyway = new Flyway();
flyway.getPlaceholders().put("db_name", settings.getDbName());
String[] initSqls = new String[0];
if (settings.getDbms().equals(DbmsType.PostgreSQL.getValue())) {
flyway.setLocations(PSQL_SCRIPT_LOCATION);
}
if (settings.getDbms().equals(DbmsType.MySql.getValue())) {
flyway.setLocations(MYSQL_SCRIPT_LOCATION);
initSqls = MYSQL_INIT_SQL;
}
flyway.setDataSource(settings.buildConnectionUrl(), settings.getUsername(), settings.getPassword(), initSqls);
flyway.setBaselineOnMigrate(false);
// Get info about migrations
MigrationInfoService info = flyway.info();
currentDbVersionInfo = info.current();
pendingMigrationsInfo = info.pending();
MigrationInfo[] all = info.all();
// Checks
if (currentDbVersionInfo == null) {
migrationRequired = true;
throw new OlderSchemaException("DB initialization is required");
}
if (pendingMigrationsInfo.length != 0) {
migrationRequired = true;
throw new OlderSchemaException("Migration to version "
+ pendingMigrationsInfo[pendingMigrationsInfo.length - 1].getVersion().getVersion()
+ " is required");
}
if (all.length != 0) {
MigrationInfo lastKnown = all[all.length - 1];
if(lastKnown.getState() == MigrationState.FUTURE_SUCCESS) {
sfUpdateRequired = true;
throw new NewerSchemaException("DB schema has newer version " + lastKnown.getVersion().getVersion()
+ ". Upgrade this Sailfish instance to use it.");
}
}
} finally {
readWriteLock.writeLock().unlock();
}
}