From 57cfd25eb5aa03a2d22702fe446fcf782cc3da56 Mon Sep 17 00:00:00 2001 From: rob bygrave Date: Fri, 10 Jan 2020 16:06:18 +1300 Subject: [PATCH] #1903 - Add ability to set migration path via DbMigration --- .../java/io/ebean/dbmigration/DbMigration.java | 17 +++++++++++++++++ .../dbmigration/DefaultDbMigration.java | 10 ++++++++++ .../dbmigration/DbMigrationGenerateTest.java | 3 ++- 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/main/java/io/ebean/dbmigration/DbMigration.java b/src/main/java/io/ebean/dbmigration/DbMigration.java index 9ee2c0595..e9d12efe6 100644 --- a/src/main/java/io/ebean/dbmigration/DbMigration.java +++ b/src/main/java/io/ebean/dbmigration/DbMigration.java @@ -62,6 +62,23 @@ public interface DbMigration { */ void setPathToResources(String pathToResources); + /** + * Set the path where migrations are generated to (which defaults to "dbmigration"). + *

+ * Normally we only use this when we use Ebean to generate the database migrations + * and then use some other tool like FlywayDB to run the migrations. + *

+ * Example: with setMigrationPath("db/migration") ... the migrations + * are generated into src/resources/db/migration. + *

+ * Note that if Ebean migration runner is used we should not use this method but + * instead set the migrationPath via a property such that both the migration generator + * and migration runner both use the same path. + * + * @param migrationPath The path that migrations are generated into. + */ + void setMigrationPath(String migrationPath); + /** * Set the server to use to determine the current model. * Typically this is not called explicitly. diff --git a/src/main/java/io/ebeaninternal/dbmigration/DefaultDbMigration.java b/src/main/java/io/ebeaninternal/dbmigration/DefaultDbMigration.java index 53d0b944c..f57cdb5de 100644 --- a/src/main/java/io/ebeaninternal/dbmigration/DefaultDbMigration.java +++ b/src/main/java/io/ebeaninternal/dbmigration/DefaultDbMigration.java @@ -91,6 +91,8 @@ public class DefaultDbMigration implements DbMigration { protected String pathToResources = "src/main/resources"; + protected String migrationPath; + protected DatabasePlatform databasePlatform; private boolean vanillaPlatform; @@ -138,6 +140,11 @@ public class DefaultDbMigration implements DbMigration { this.pathToResources = pathToResources; } + @Override + public void setMigrationPath(String migrationPath) { + this.migrationPath = migrationPath; + } + /** * Set the server to use to determine the current model. * Typically this is not called explicitly. @@ -685,6 +692,9 @@ public class DefaultDbMigration implements DbMigration { if (applyPrefix != null) { migrationConfig.setApplyPrefix(applyPrefix); } + if (migrationPath != null) { + migrationConfig.setMigrationPath(migrationPath); + } if (header != null) { migrationConfig.setDdlHeader(header); } diff --git a/src/test/java/io/ebeaninternal/dbmigration/DbMigrationGenerateTest.java b/src/test/java/io/ebeaninternal/dbmigration/DbMigrationGenerateTest.java index 8b655b2dc..2990dcf21 100644 --- a/src/test/java/io/ebeaninternal/dbmigration/DbMigrationGenerateTest.java +++ b/src/test/java/io/ebeaninternal/dbmigration/DbMigrationGenerateTest.java @@ -41,7 +41,8 @@ public class DbMigrationGenerateTest { // We use src/test/resources as output directory (so we see in GIT if files will change) migration.setPathToResources("src/test/resources"); - + migration.setMigrationPath("db/migration"); + migration.setMigrationPath(null); // use the default for this test // migration.addPlatform(Platform.GENERIC, "generic"); there is no ddl handler for generic // migration.addPlatform(Platform.SQLANYWHERE, "sqlanywhere"); and sqlanywhere