diff --git a/src/main/java/io/ebean/config/DbMigrationConfig.java b/src/main/java/io/ebean/config/DbMigrationConfig.java index 3f6656768..7e47156b3 100644 --- a/src/main/java/io/ebean/config/DbMigrationConfig.java +++ b/src/main/java/io/ebean/config/DbMigrationConfig.java @@ -402,9 +402,20 @@ public class DbMigrationConfig { * You can use placeholders like ${version} or ${timestamp} in properties file. */ public String getDdlHeader() { + if (ddlHeader != null && !ddlHeader.isEmpty()) { + ddlHeader = StringHelper.replaceString(ddlHeader, "${version}", EbeanVersion.getVersion()); + ddlHeader = StringHelper.replaceString(ddlHeader, "${timestamp}", ZonedDateTime.now().format( DateTimeFormatter.ISO_INSTANT )); + } return ddlHeader; } + /** + * Set the header prepended to the DDL. + */ + public void setDdlHeader(String ddlHeader) { + this.ddlHeader = ddlHeader; + } + /** * Set migration versions that should have their checksum reset and not run. *

@@ -475,10 +486,6 @@ public class DbMigrationConfig { String adminPwd = properties.get("datasource." + serverName + ".adminpassword", dbPassword); dbPassword = properties.get("migration.dbpassword", adminPwd); ddlHeader = properties.get("ddl.header", ddlHeader); - if (ddlHeader != null && !ddlHeader.isEmpty()) { - ddlHeader = StringHelper.replaceString(ddlHeader, "${version}", EbeanVersion.getVersion()); - ddlHeader = StringHelper.replaceString(ddlHeader, "${timestamp}", ZonedDateTime.now().format( DateTimeFormatter.ISO_INSTANT )); - } } /** diff --git a/src/main/java/io/ebean/dbmigration/DbMigration.java b/src/main/java/io/ebean/dbmigration/DbMigration.java index cd9c122a0..582838e79 100644 --- a/src/main/java/io/ebean/dbmigration/DbMigration.java +++ b/src/main/java/io/ebean/dbmigration/DbMigration.java @@ -93,6 +93,38 @@ public interface DbMigration { */ void setStrictMode(boolean strictMode); + /** + * Set to true to include a generated header comment in the DDL script. + */ + void setIncludeGeneratedFileComment(boolean includeGeneratedFileComment); + + /** + * Set the header that is included in the generated DDL script. + */ + void setHeader(String header); + + /** + * Set the prefix for the version. Set this to "V" for use with Flyway. + */ + void setApplyPrefix(String applyPrefix); + + /** + * Set the version of the migration to be generated. + */ + void setVersion(String version); + + /** + * Set the name of the migration to be generated. + */ + void setName(String name); + + /** + * Generate a migration for the version specified that contains pending drops. + * + * @param generatePendingDrop The version of a prior migration that holds pending drops. + */ + void setGeneratePendingDrop(String generatePendingDrop); + /** * Add an additional platform to write the migration DDL. *

diff --git a/src/main/java/io/ebeaninternal/dbmigration/DefaultDbMigration.java b/src/main/java/io/ebeaninternal/dbmigration/DefaultDbMigration.java index fe698ffba..bc81db030 100644 --- a/src/main/java/io/ebeaninternal/dbmigration/DefaultDbMigration.java +++ b/src/main/java/io/ebeaninternal/dbmigration/DefaultDbMigration.java @@ -91,6 +91,12 @@ public class DefaultDbMigration implements DbMigration { protected DbConstraintNaming constraintNaming; protected Boolean strictMode; + protected Boolean includeGeneratedFileComment; + protected String header; + protected String applyPrefix; + protected String version; + protected String name; + protected String generatePendingDrop; /** * Create for offline migration generation. @@ -148,6 +154,36 @@ public class DefaultDbMigration implements DbMigration { this.strictMode = strictMode; } + @Override + public void setApplyPrefix(String applyPrefix) { + this.applyPrefix = applyPrefix; + } + + @Override + public void setVersion(String version) { + this.version = version; + } + + @Override + public void setName(String name) { + this.name = name; + } + + @Override + public void setGeneratePendingDrop(String generatePendingDrop) { + this.generatePendingDrop = generatePendingDrop; + } + + @Override + public void setIncludeGeneratedFileComment(boolean includeGeneratedFileComment) { + this.includeGeneratedFileComment = includeGeneratedFileComment; + } + + @Override + public void setHeader(String header) { + this.header = header; + } + /** * Set the specific platform to generate DDL for. *

@@ -512,8 +548,28 @@ public class DefaultDbMigration implements DbMigration { databasePlatform = server.getDatabasePlatform(); logger.debug("set platform to {}", databasePlatform.getName()); } - if (strictMode != null && migrationConfig != null) { - migrationConfig.setStrictMode(strictMode); + if (migrationConfig != null) { + if (strictMode != null) { + migrationConfig.setStrictMode(strictMode); + } + if (applyPrefix != null) { + migrationConfig.setApplyPrefix(applyPrefix); + } + if (header != null) { + migrationConfig.setDdlHeader(header); + } + if (includeGeneratedFileComment != null) { + migrationConfig.setIncludeGeneratedFileComment(includeGeneratedFileComment); + } + if (version != null) { + migrationConfig.setVersion(version); + } + if (name != null) { + migrationConfig.setName(name); + } + if (generatePendingDrop != null) { + migrationConfig.setGeneratePendingDrop(generatePendingDrop); + } } }