Преглед изворни кода

add baseline-only flag, use that when first-time initializing the database

tags/2.0.1
Jonathan Cobb пре 4 година
родитељ
комит
cd9cf18c90
3 измењених фајлова са 11 додато и 9 уклоњено
  1. +1
    -0
      wizard-server/src/main/java/org/cobbzilla/wizard/server/config/DatabaseConfiguration.java
  2. +4
    -3
      wizard-server/src/main/java/org/cobbzilla/wizard/server/listener/FlywayMigrationListener.java
  3. +6
    -6
      wizard-server/src/main/java/org/cobbzilla/wizard/server/listener/SystemInitializerListener.java

+ 1
- 0
wizard-server/src/main/java/org/cobbzilla/wizard/server/config/DatabaseConfiguration.java Прегледај датотеку

@@ -38,6 +38,7 @@ public class DatabaseConfiguration {
@Getter @Setter private HibernateConfiguration hibernate;

@Getter @Setter private boolean migrationEnabled = true;
@Getter @Setter private boolean migrationBaselineOnly = false;

private final List<Runnable> postDataSourceSetupHandlers = new ArrayList<>();
public void addPostDataSourceSetupHandler (Runnable handler) { postDataSourceSetupHandlers.add(handler); }


+ 4
- 3
wizard-server/src/main/java/org/cobbzilla/wizard/server/listener/FlywayMigrationListener.java Прегледај датотеку

@@ -46,7 +46,8 @@ public class FlywayMigrationListener<C extends RestServerConfiguration> extends

// check to see if flyway tables exist
final var flywayTable = getFlywayTableName();
final var baseline = checkIfBaseline(configuration, flywayTable);
final boolean baselineOnly = configuration.getDatabase().isMigrationBaselineOnly();
final var baseline = baselineOnly || checkIfBaseline(configuration, flywayTable);
final var baselineVersion = baseline ? MigrationVersion.fromVersion(getBaselineVersion())
: MigrationVersion.EMPTY;
if (baseline) {
@@ -58,8 +59,8 @@ public class FlywayMigrationListener<C extends RestServerConfiguration> extends

final Flyway flyway = new Flyway(new FluentConfiguration()
.dataSource(dbConfig.getUrl(), dbConfig.getUser(), dbConfig.getPassword())
.skipDefaultResolvers(skipDefaultResolvers())
.resolvers(resolvers != null ? resolvers : new MigrationResolver[0])
.skipDefaultResolvers(baselineOnly || skipDefaultResolvers())
.resolvers(resolvers != null && !baselineOnly ? resolvers : new MigrationResolver[0])
.baselineOnMigrate(baseline)
.baselineVersion(baselineVersion));



+ 6
- 6
wizard-server/src/main/java/org/cobbzilla/wizard/server/listener/SystemInitializerListener.java Прегледај датотеку

@@ -66,9 +66,9 @@ public class SystemInitializerListener extends RestServerLifecycleListenerBase {
if (checkTable) {
ok = checkTable(config);
if (!ok) {
// create the schema when the test table does not exist. Disable migration
// create the schema when the test table does not exist. Do baseline migration
config.getDatabase().getHibernate().setHbm2ddlAuto("create");
config.getDatabase().setMigrationEnabled(false);
config.getDatabase().setMigrationBaselineOnly(true);
}
} else {
config.execSql("select 1");
@@ -87,9 +87,9 @@ public class SystemInitializerListener extends RestServerLifecycleListenerBase {
execScript("createdb --encoding=UTF-8 "+db);
if (!dbExists(db)) die(PREFIX+"error creating "+db+" database");

// create the schema, just this time. Disable migration.
// create the schema, just this time. Do baseline migration.
config.getDatabase().getHibernate().setHbm2ddlAuto("create");
config.getDatabase().setMigrationEnabled(false);
config.getDatabase().setMigrationBaselineOnly(true);

} else {
log.info(db+" DB exists, not creating");
@@ -125,9 +125,9 @@ public class SystemInitializerListener extends RestServerLifecycleListenerBase {
try {
return runTableCheck(config, tableName);
} catch (Exception e) {
log.warn("table '"+tableName+"' not found, will create schema (disabling migration): " + shortError(e));
log.warn("table '"+tableName+"' not found, will create schema and do baseline migration: " + shortError(e));
config.getDatabase().getHibernate().setHbm2ddlAuto("create");
config.getDatabase().setMigrationEnabled(false);
config.getDatabase().setMigrationBaselineOnly(true);
}
}
return false;


Loading…
Откажи
Сачувај