Skip to content

Commit cdcf182

Browse files
authored
Merge pull request #436 from playframework/mergify/bp/7.0.x/pr-433
[7.0.x] Introduce configuration parameter to control the generation of the evolution SQL files (backport #433) by @vadimvera
2 parents 863c805 + ee65916 commit cdcf182

File tree

7 files changed

+58
-4
lines changed

7 files changed

+58
-4
lines changed

build.sbt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ val previousVersion: Option[String] = Some("7.0.0")
2323
lazy val mimaSettings = Seq(
2424
mimaPreviousArtifacts := previousVersion.map(organization.value %% moduleName.value % _).toSet,
2525
mimaBinaryIssueFilters ++= Seq(
26+
ProblemFilters.exclude[ReversedMissingMethodProblem]("play.db.ebean.EbeanConfig.generateEvolutionsScripts"),
2627
)
2728
)
2829

play-ebean/src/main/java/play/db/ebean/DefaultEbeanConfig.java

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,22 @@
2626
public class DefaultEbeanConfig implements EbeanConfig {
2727

2828
private final String defaultServer;
29+
2930
private final Map<String, DatabaseConfig> serverConfigs;
3031

31-
public DefaultEbeanConfig(String defaultServer, Map<String, DatabaseConfig> serverConfigs) {
32+
private final boolean generateEvolutionsScripts;
33+
34+
public DefaultEbeanConfig(
35+
String defaultServer,
36+
Map<String, DatabaseConfig> serverConfigs,
37+
boolean generateEvolutionsScripts) {
3238
this.defaultServer = defaultServer;
3339
this.serverConfigs = serverConfigs;
40+
this.generateEvolutionsScripts = generateEvolutionsScripts;
41+
}
42+
43+
public DefaultEbeanConfig(String defaultServer, Map<String, DatabaseConfig> serverConfigs) {
44+
this(defaultServer, serverConfigs, true);
3445
}
3546

3647
@Override
@@ -43,11 +54,18 @@ public Map<String, DatabaseConfig> serverConfigs() {
4354
return serverConfigs;
4455
}
4556

57+
@Override
58+
public boolean generateEvolutionsScripts() {
59+
return generateEvolutionsScripts;
60+
}
61+
4662
@Singleton
4763
public static class EbeanConfigParser implements Provider<EbeanConfig> {
4864

4965
private final Config config;
66+
5067
private final Environment environment;
68+
5169
private final DBApi dbApi;
5270

5371
private static final Logger.ALogger LOGGER = Logger.of(DefaultEbeanConfig.class);
@@ -100,7 +118,10 @@ public EbeanConfig parse() {
100118
serverConfigs.put(key, serverConfig);
101119
}
102120

103-
return new DefaultEbeanConfig(ebeanConfig.getDefaultDatasource(), serverConfigs);
121+
return new DefaultEbeanConfig(
122+
ebeanConfig.getDefaultDatasource(),
123+
serverConfigs,
124+
ebeanConfig.generateEvolutionsScripts());
104125
}
105126

106127
private void setServerConfigDataSource(String key, DatabaseConfig serverConfig) {

play-ebean/src/main/java/play/db/ebean/EbeanConfig.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,6 @@ public interface EbeanConfig {
1212
String defaultServer();
1313

1414
Map<String, DatabaseConfig> serverConfigs();
15+
16+
boolean generateEvolutionsScripts();
1517
}

play-ebean/src/main/java/play/db/ebean/EbeanDynamicEvolutions.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,9 @@ public void create() {
6464
if (environment.isProd()) {
6565
return;
6666
}
67+
if (!config.generateEvolutionsScripts()) {
68+
return;
69+
}
6770
config
6871
.serverConfigs()
6972
.forEach(

play-ebean/src/main/java/play/db/ebean/EbeanParsedConfig.java

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,22 @@
1818
public class EbeanParsedConfig {
1919

2020
private final String defaultDatasource;
21+
2122
private final Map<String, List<String>> datasourceModels;
2223

23-
public EbeanParsedConfig(String defaultDatasource, Map<String, List<String>> datasourceModels) {
24+
private final boolean generateEvolutionsScripts;
25+
26+
public EbeanParsedConfig(
27+
String defaultDatasource,
28+
Map<String, List<String>> datasourceModels,
29+
boolean generateEvolutionsScripts) {
2430
this.defaultDatasource = defaultDatasource;
2531
this.datasourceModels = datasourceModels;
32+
this.generateEvolutionsScripts = generateEvolutionsScripts;
33+
}
34+
35+
public EbeanParsedConfig(String defaultDatasource, Map<String, List<String>> datasourceModels) {
36+
this(defaultDatasource, datasourceModels, true);
2637
}
2738

2839
public String getDefaultDatasource() {
@@ -33,6 +44,10 @@ public Map<String, List<String>> getDatasourceModels() {
3344
return datasourceModels;
3445
}
3546

47+
public boolean generateEvolutionsScripts() {
48+
return generateEvolutionsScripts;
49+
}
50+
3651
/**
3752
* Parse a play configuration.
3853
*
@@ -44,6 +59,7 @@ public static EbeanParsedConfig parseFromConfig(Config config) {
4459
Config playEbeanConfig = config.getConfig("play.ebean");
4560
String defaultDatasource = playEbeanConfig.getString("defaultDatasource");
4661
String ebeanConfigKey = playEbeanConfig.getString("config");
62+
boolean generateEvolutionsScripts = playEbeanConfig.getBoolean("generateEvolutionsScripts");
4763

4864
Map<String, List<String>> datasourceModels = new HashMap<>();
4965

@@ -64,6 +80,6 @@ public static EbeanParsedConfig parseFromConfig(Config config) {
6480
datasourceModels.put(key, models);
6581
});
6682
}
67-
return new EbeanParsedConfig(defaultDatasource, datasourceModels);
83+
return new EbeanParsedConfig(defaultDatasource, datasourceModels, generateEvolutionsScripts);
6884
}
6985
}

play-ebean/src/main/resources/reference.conf

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,8 @@ play {
99

1010
# The name of the default ebean datasource
1111
defaultDatasource = "default"
12+
13+
# The key to control the generation of the Evolutions scripts
14+
generateEvolutionsScripts = true
1215
}
1316
}

play-ebean/src/test/java/play/db/ebean/EbeanParsedConfigTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ public void defaultConfig() {
2626
EbeanParsedConfig config = parse(Collections.emptyMap());
2727
assertThat(config.getDefaultDatasource(), equalTo("default"));
2828
assertThat(config.getDatasourceModels().size(), equalTo(0));
29+
assertThat(config.generateEvolutionsScripts(), equalTo(Boolean.TRUE));
2930
}
3031

3132
@Test
@@ -52,6 +53,13 @@ public void customDefault() {
5253
assertThat(config.getDefaultDatasource(), equalTo("custom"));
5354
}
5455

56+
@Test
57+
public void disableGenerateEvolutionsScripts() {
58+
EbeanParsedConfig config =
59+
parse(ImmutableMap.of("play.ebean.generateEvolutionsScripts", false));
60+
assertThat(config.generateEvolutionsScripts(), equalTo(Boolean.FALSE));
61+
}
62+
5563
@Test
5664
public void customConfig() {
5765
EbeanParsedConfig config =

0 commit comments

Comments
 (0)