diff --git a/wizard-server/src/main/java/org/cobbzilla/wizard/server/config/DatabaseConfiguration.java b/wizard-server/src/main/java/org/cobbzilla/wizard/server/config/DatabaseConfiguration.java index 64f5d90..4d0f2da 100644 --- a/wizard-server/src/main/java/org/cobbzilla/wizard/server/config/DatabaseConfiguration.java +++ b/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 postDataSourceSetupHandlers = new ArrayList<>(); public void addPostDataSourceSetupHandler (Runnable handler) { postDataSourceSetupHandlers.add(handler); } diff --git a/wizard-server/src/main/java/org/cobbzilla/wizard/server/listener/FlywayMigrationListener.java b/wizard-server/src/main/java/org/cobbzilla/wizard/server/listener/FlywayMigrationListener.java index 80ef179..072fa99 100644 --- a/wizard-server/src/main/java/org/cobbzilla/wizard/server/listener/FlywayMigrationListener.java +++ b/wizard-server/src/main/java/org/cobbzilla/wizard/server/listener/FlywayMigrationListener.java @@ -46,7 +46,8 @@ public class FlywayMigrationListener 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 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)); diff --git a/wizard-server/src/main/java/org/cobbzilla/wizard/server/listener/SystemInitializerListener.java b/wizard-server/src/main/java/org/cobbzilla/wizard/server/listener/SystemInitializerListener.java index b87e517..7ca17fe 100644 --- a/wizard-server/src/main/java/org/cobbzilla/wizard/server/listener/SystemInitializerListener.java +++ b/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;