From 0abf0a15f068b4cabdb968c4248bef937d07aa44 Mon Sep 17 00:00:00 2001 From: Mikhail Gavrilov Date: Tue, 3 Oct 2023 15:20:17 +0300 Subject: [PATCH 1/4] #24 Support custom Docker images for Postgres (i.e. Postgis) --- .vscode/settings.json | 3 + pom.xml | 2 +- .../codegen/database/DatabaseProvider.java | 4 +- .../jooq/codegen/PluginTest.java | 14 +++ src/test/resources/pom/postgis-flyway/pom.xml | 92 +++++++++++++++++++ .../migration/postgres/V1__create_tables.sql | 16 ++++ 6 files changed, 129 insertions(+), 2 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 src/test/resources/pom/postgis-flyway/pom.xml create mode 100755 src/test/resources/pom/postgis-flyway/src/main/resources/db/migration/postgres/V1__create_tables.sql diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..e0f15db --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "java.configuration.updateBuildConfiguration": "automatic" +} \ No newline at end of file diff --git a/pom.xml b/pom.xml index c27d986..a8ce9c4 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ org.testcontainers testcontainers-jooq-codegen-maven-plugin - 0.0.3 + 0.0.4 maven-plugin testcontainers-jooq-codegen-maven-plugin jOOQ code generator using Testcontainers diff --git a/src/main/java/org/testcontainers/jooq/codegen/database/DatabaseProvider.java b/src/main/java/org/testcontainers/jooq/codegen/database/DatabaseProvider.java index afbb61c..af685a3 100644 --- a/src/main/java/org/testcontainers/jooq/codegen/database/DatabaseProvider.java +++ b/src/main/java/org/testcontainers/jooq/codegen/database/DatabaseProvider.java @@ -5,6 +5,7 @@ import org.testcontainers.containers.MariaDBContainer; import org.testcontainers.containers.MySQLContainer; import org.testcontainers.containers.PostgreSQLContainer; +import org.testcontainers.utility.DockerImageName; /** DatabaseProvider provides container instance for a given DatabaseType */ public class DatabaseProvider { @@ -15,7 +16,8 @@ public static JdbcDatabaseContainer getDatabaseContainer(DatabaseProps props) String image = Optional.ofNullable(props.getContainerImage()).orElse(dbType.getDefaultImage()); JdbcDatabaseContainer container = switch (dbType) { - case POSTGRES -> new PostgreSQLContainer<>(image); + case POSTGRES -> new PostgreSQLContainer<>( + DockerImageName.parse(image).asCompatibleSubstituteFor("postgres")); case MARIADB -> new MariaDBContainer<>(image); case MYSQL -> new MySQLContainer<>(image); }; diff --git a/src/test/java/org/testcontainers/jooq/codegen/PluginTest.java b/src/test/java/org/testcontainers/jooq/codegen/PluginTest.java index 508cc79..363b098 100644 --- a/src/test/java/org/testcontainers/jooq/codegen/PluginTest.java +++ b/src/test/java/org/testcontainers/jooq/codegen/PluginTest.java @@ -55,6 +55,20 @@ public void testPostgresLiquibase() throws Exception { .hasGeneratedJooqTable("public_", "Databasechangelog.java"); } + @Test + public void testPostgissFlyway() throws Exception { + // given + MavenProject mavenProject = getMavenProject("postgis-flyway"); + + // when + mojoRule.lookupConfiguredMojo(mavenProject, "generate").execute(); + + // then + assertThatProject(mavenProject) + .hasGeneratedJooqTable("Users.java") + .hasGeneratedJooqTable("FlywaySchemaHistory.java"); + } + @Test public void testMysqlFlyway() throws Exception { // given diff --git a/src/test/resources/pom/postgis-flyway/pom.xml b/src/test/resources/pom/postgis-flyway/pom.xml new file mode 100644 index 0000000..257a631 --- /dev/null +++ b/src/test/resources/pom/postgis-flyway/pom.xml @@ -0,0 +1,92 @@ + + + 4.0.0 + + org.testcontainers + testcontainers-jooq-codegen-maven-plugin-test + 0.0.1-SNAPSHOT + + + 17 + 1.18.3 + 0.0.3 + 3.18.3 + 42.6.0 + + + + + org.jooq + jooq-codegen + ${jooq.version} + + + org.jooq + jooq + ${jooq.version} + + + + + + + + org.testcontainers + testcontainers-jooq-codegen-maven-plugin + ${testcontainers-jooq-codegen-maven-plugin.version} + + + org.testcontainers + postgresql + ${testcontainers.version} + + + org.postgresql + postgresql + ${postgresql.version} + + + + generate + + + + generate + + generate + + generate-sources + + + + + POSTGRES + postgis/postgis:15-3.4-alpine + test + test + test + + + + filesystem:${project.basedir}/src/main/resources/db/migration/postgres + + + + + + .* + public + + + org.jooq.codegen.maven.test + target/generated-sources/jooq + + + + + + + + diff --git a/src/test/resources/pom/postgis-flyway/src/main/resources/db/migration/postgres/V1__create_tables.sql b/src/test/resources/pom/postgis-flyway/src/main/resources/db/migration/postgres/V1__create_tables.sql new file mode 100755 index 0000000..46520c7 --- /dev/null +++ b/src/test/resources/pom/postgis-flyway/src/main/resources/db/migration/postgres/V1__create_tables.sql @@ -0,0 +1,16 @@ +create sequence user_id_seq start with 1 increment by 5; + +create table users +( + id bigint DEFAULT nextval('user_id_seq') not null, + email varchar not null, + password varchar not null, + name varchar not null, + role varchar not null, + verified bool not null default false, + verification_token varchar, + created_at timestamp, + updated_at timestamp, + primary key (id), + CONSTRAINT user_email_unique UNIQUE (email) +); From c5af4bb063df76cbe4327b000ef1f4b83cb27ab9 Mon Sep 17 00:00:00 2001 From: Mikhail Gavrilov Date: Tue, 3 Oct 2023 15:29:57 +0300 Subject: [PATCH 2/4] Delete .vscode/settings.json --- .vscode/settings.json | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index e0f15db..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "java.configuration.updateBuildConfiguration": "automatic" -} \ No newline at end of file From 80840a751bbd6215d4866af3721dd18ea486ee16 Mon Sep 17 00:00:00 2001 From: Mikhail Gavrilov Date: Tue, 3 Oct 2023 18:38:48 +0300 Subject: [PATCH 3/4] Fixed version and updated other DB providers to support custom images --- examples/mariadb-flyway-example/pom.xml | 4 ++-- examples/mysql-flyway-example/pom.xml | 4 ++-- examples/postgres-flyway-example/pom.xml | 4 ++-- examples/postgres-liquibase-example/pom.xml | 4 ++-- pom.xml | 2 +- .../jooq/codegen/database/DatabaseProvider.java | 6 ++++-- src/test/resources/pom/mariadb-liquibase/pom.xml | 2 +- .../pom/mysql-flyway-with-flyway-config-file/pom.xml | 2 +- src/test/resources/pom/mysql-flyway/pom.xml | 2 +- src/test/resources/pom/postgis-flyway/pom.xml | 2 +- src/test/resources/pom/postgres-flyway/pom.xml | 2 +- src/test/resources/pom/postgres-liquibase/pom.xml | 2 +- 12 files changed, 19 insertions(+), 17 deletions(-) diff --git a/examples/mariadb-flyway-example/pom.xml b/examples/mariadb-flyway-example/pom.xml index de1c31e..1b2c892 100644 --- a/examples/mariadb-flyway-example/pom.xml +++ b/examples/mariadb-flyway-example/pom.xml @@ -7,14 +7,14 @@ org.testcontainers.jooqtc mariadb-flyway-example - 0.0.3 + 0.0.4-SNAPSHOT 17 17 UTF-8 1.18.3 - 0.0.3 + 0.0.4-SNAPSHOT 3.18.3 3.1.2 diff --git a/examples/mysql-flyway-example/pom.xml b/examples/mysql-flyway-example/pom.xml index 4fbe056..466c579 100644 --- a/examples/mysql-flyway-example/pom.xml +++ b/examples/mysql-flyway-example/pom.xml @@ -7,14 +7,14 @@ org.testcontainers.jooqtc mysql-flyway-example - 0.0.3 + 0.0.4-SNAPSHOT 17 17 UTF-8 1.18.3 - 0.0.3 + 0.0.4-SNAPSHOT 3.18.3 8.0.32 diff --git a/examples/postgres-flyway-example/pom.xml b/examples/postgres-flyway-example/pom.xml index 20dd2b7..fc71ce6 100644 --- a/examples/postgres-flyway-example/pom.xml +++ b/examples/postgres-flyway-example/pom.xml @@ -7,14 +7,14 @@ org.testcontainers.jooqtc postgres-flyway-example - 0.0.3 + 0.0.4-SNAPSHOT 17 17 UTF-8 1.18.3 - 0.0.3 + 0.0.4-SNAPSHOT 3.18.3 42.6.0 diff --git a/examples/postgres-liquibase-example/pom.xml b/examples/postgres-liquibase-example/pom.xml index ef9b47b..34c7cf4 100644 --- a/examples/postgres-liquibase-example/pom.xml +++ b/examples/postgres-liquibase-example/pom.xml @@ -7,14 +7,14 @@ org.testcontainers.jooqtc postgres-liquibase-example - 0.0.3 + 0.0.4-SNAPSHOT 17 17 UTF-8 1.18.3 - 0.0.3 + 0.0.4-SNAPSHOT 3.18.3 42.6.0 diff --git a/pom.xml b/pom.xml index a8ce9c4..8cc4f9f 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ org.testcontainers testcontainers-jooq-codegen-maven-plugin - 0.0.4 + 0.0.4-SNAPSHOT maven-plugin testcontainers-jooq-codegen-maven-plugin jOOQ code generator using Testcontainers diff --git a/src/main/java/org/testcontainers/jooq/codegen/database/DatabaseProvider.java b/src/main/java/org/testcontainers/jooq/codegen/database/DatabaseProvider.java index af685a3..55c48ff 100644 --- a/src/main/java/org/testcontainers/jooq/codegen/database/DatabaseProvider.java +++ b/src/main/java/org/testcontainers/jooq/codegen/database/DatabaseProvider.java @@ -18,8 +18,10 @@ public static JdbcDatabaseContainer getDatabaseContainer(DatabaseProps props) switch (dbType) { case POSTGRES -> new PostgreSQLContainer<>( DockerImageName.parse(image).asCompatibleSubstituteFor("postgres")); - case MARIADB -> new MariaDBContainer<>(image); - case MYSQL -> new MySQLContainer<>(image); + case MARIADB -> new MariaDBContainer<>( + DockerImageName.parse(image).asCompatibleSubstituteFor("mariadb")); + case MYSQL -> new MySQLContainer<>( + DockerImageName.parse(image).asCompatibleSubstituteFor("mysql")); }; if (isNotEmpty(props.getUsername())) { container.withUsername(props.getUsername()); diff --git a/src/test/resources/pom/mariadb-liquibase/pom.xml b/src/test/resources/pom/mariadb-liquibase/pom.xml index 1cefd8f..13e9904 100644 --- a/src/test/resources/pom/mariadb-liquibase/pom.xml +++ b/src/test/resources/pom/mariadb-liquibase/pom.xml @@ -11,7 +11,7 @@ 17 1.18.3 - 0.0.3 + 0.0.4-SNAPSHOT 3.18.3 42.6.0 diff --git a/src/test/resources/pom/mysql-flyway-with-flyway-config-file/pom.xml b/src/test/resources/pom/mysql-flyway-with-flyway-config-file/pom.xml index 3d807fb..5255fe4 100644 --- a/src/test/resources/pom/mysql-flyway-with-flyway-config-file/pom.xml +++ b/src/test/resources/pom/mysql-flyway-with-flyway-config-file/pom.xml @@ -11,7 +11,7 @@ 17 1.18.1 - 0.0.3 + 0.0.4-SNAPSHOT 3.18.3 42.6.0 diff --git a/src/test/resources/pom/mysql-flyway/pom.xml b/src/test/resources/pom/mysql-flyway/pom.xml index e63fe1b..9a7e7f2 100644 --- a/src/test/resources/pom/mysql-flyway/pom.xml +++ b/src/test/resources/pom/mysql-flyway/pom.xml @@ -11,7 +11,7 @@ 17 1.18.3 - 0.0.3 + 0.0.4-SNAPSHOT 3.18.3 42.6.0 diff --git a/src/test/resources/pom/postgis-flyway/pom.xml b/src/test/resources/pom/postgis-flyway/pom.xml index 257a631..9f6e5a2 100644 --- a/src/test/resources/pom/postgis-flyway/pom.xml +++ b/src/test/resources/pom/postgis-flyway/pom.xml @@ -11,7 +11,7 @@ 17 1.18.3 - 0.0.3 + 0.0.4-SNAPSHOT 3.18.3 42.6.0 diff --git a/src/test/resources/pom/postgres-flyway/pom.xml b/src/test/resources/pom/postgres-flyway/pom.xml index 2f42e71..391bbda 100644 --- a/src/test/resources/pom/postgres-flyway/pom.xml +++ b/src/test/resources/pom/postgres-flyway/pom.xml @@ -11,7 +11,7 @@ 17 1.18.3 - 0.0.3 + 0.0.4-SNAPSHOT 3.18.3 42.6.0 diff --git a/src/test/resources/pom/postgres-liquibase/pom.xml b/src/test/resources/pom/postgres-liquibase/pom.xml index c3751eb..ad0fbaf 100644 --- a/src/test/resources/pom/postgres-liquibase/pom.xml +++ b/src/test/resources/pom/postgres-liquibase/pom.xml @@ -11,7 +11,7 @@ 17 1.18.3 - 0.0.3 + 0.0.4-SNAPSHOT 3.18.3 42.6.0 From 091500e344999ab57646444f62f0740c77053218 Mon Sep 17 00:00:00 2001 From: Mikhail Gavrilov Date: Tue, 3 Oct 2023 23:27:03 +0300 Subject: [PATCH 4/4] Fixed test name --- src/test/java/org/testcontainers/jooq/codegen/PluginTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/org/testcontainers/jooq/codegen/PluginTest.java b/src/test/java/org/testcontainers/jooq/codegen/PluginTest.java index 363b098..ad7a765 100644 --- a/src/test/java/org/testcontainers/jooq/codegen/PluginTest.java +++ b/src/test/java/org/testcontainers/jooq/codegen/PluginTest.java @@ -56,7 +56,7 @@ public void testPostgresLiquibase() throws Exception { } @Test - public void testPostgissFlyway() throws Exception { + public void testPostgisFlyway() throws Exception { // given MavenProject mavenProject = getMavenProject("postgis-flyway");