From 964dffb8a53ce84927eab2ea98a46950d4a3b07f Mon Sep 17 00:00:00 2001 From: Jonathan Cornaz Date: Wed, 19 Jun 2024 12:06:31 +0200 Subject: [PATCH] feat: `ContainerConfig.postgres()` helper function (#14) --- .../kotlin/com/optravis/jooq/gradle/Config.kt | 26 +++++++++++++++---- .../jooq/gradle/JooqGeneratorPlugin.kt | 10 ++----- 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/src/main/kotlin/com/optravis/jooq/gradle/Config.kt b/src/main/kotlin/com/optravis/jooq/gradle/Config.kt index f3732f5..39ce013 100644 --- a/src/main/kotlin/com/optravis/jooq/gradle/Config.kt +++ b/src/main/kotlin/com/optravis/jooq/gradle/Config.kt @@ -10,6 +10,12 @@ import java.io.Serializable ) public annotation class ExperimentalJooqGeneratorConfig +private object Default { + const val DB = "jooq" + const val USER = "jooq" + const val PASSWORD = "jooq" +} + @OptIn(ExperimentalJooqGeneratorConfig::class) internal data class JooqRootConfig( val container: ContainerConfig, @@ -33,10 +39,16 @@ public data class ContainerConfig( internal val port: Int, internal val environment: Map ) : Serializable { - internal companion object { - fun postgres(db: String, user: String, password: String, version: Int = 16) = ContainerConfig( + public companion object { + public fun postgres( + db: String = Default.DB, + user: String = Default.USER, + password: String = Default.PASSWORD, + version: String = "16", + port: Int = 5432, + ): ContainerConfig = ContainerConfig( image = "postgres:$version", - port = 5432, + port = port, environment = mapOf( "POSTGRES_DB" to db, "POSTGRES_USER" to user, @@ -77,8 +89,12 @@ public data class DbConnectionConfig( /** JDBC url template. `{{port}}` will be substituted with the container port */ internal val urlTemplate: String, ) : Serializable { - internal companion object { - fun postgres(db: String, user: String, password: String) = DbConnectionConfig( + public companion object { + public fun postgres( + db: String = Default.DB, + user: String = Default.USER, + password: String = Default.PASSWORD + ): DbConnectionConfig = DbConnectionConfig( user = user, password = password, urlTemplate = "jdbc:postgresql://localhost:{{port}}/$db" diff --git a/src/main/kotlin/com/optravis/jooq/gradle/JooqGeneratorPlugin.kt b/src/main/kotlin/com/optravis/jooq/gradle/JooqGeneratorPlugin.kt index 8e060c3..11074a3 100644 --- a/src/main/kotlin/com/optravis/jooq/gradle/JooqGeneratorPlugin.kt +++ b/src/main/kotlin/com/optravis/jooq/gradle/JooqGeneratorPlugin.kt @@ -26,12 +26,6 @@ public interface JooqGeneratorExtension { public val generatorConfig: Property } -private object Default { - const val DB = "jooq" - const val USER = "jooq" - const val PASSWORD = "jooq" -} - @OptIn(ExperimentalJooqGeneratorConfig::class) public class JooqGeneratorPlugin : Plugin { override fun apply(project: Project): Unit = with(project) { @@ -65,8 +59,8 @@ public class JooqGeneratorPlugin : Plugin { private fun Project.createExtension() = extensions.create("jooqGenerator").apply { - containerConfig.convention(ContainerConfig.postgres(Default.DB, Default.USER, Default.PASSWORD)) - connectionConfig.convention(DbConnectionConfig.postgres(Default.DB, Default.USER, Default.PASSWORD)) + containerConfig.convention(ContainerConfig.postgres()) + connectionConfig.convention(DbConnectionConfig.postgres()) jooqDbConfig.convention(JooqDatabaseConfig.postgres()) migrationDirectory.convention(File("${project.layout.projectDirectory}/src/main/resources/db/migration")) generatorConfig.convention(JooqGeneratorConfig())