Class DatabaseExtension
java.lang.Object
io.github.suppierk.codegen.extensions.DatabaseExtension
- All Implemented Interfaces:
org.gradle.api.Named
Describes configuration for a logical temporary database instance. Each database can host
multiple schemas, and each schema references one or more jOOQ configurations.
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.gradle.api.Named
org.gradle.api.Named.Namer -
Constructor Summary
ConstructorsConstructorDescriptionDatabaseExtension(String name, org.gradle.api.model.ObjectFactory objects, org.gradle.api.logging.Logger logger) Default constructor. -
Method Summary
Modifier and TypeMethodDescriptionvoidcontainer(groovy.lang.Closure<?> closure) Groovy-friendly variant accepting aClosure.voidcontainer(org.gradle.api.Action<? super ContainerExtension> action) Configures container-specific overrides (currently only the Docker image) for the current database.createDatabaseContainer(String driverClassName, ClassLoader classLoader) Creates a Testcontainers database container instance for the resolved driver.determineContainerImage(String driverClassName) Resolves the Docker image that will back the requested JDBC driver.voidGroovy-friendly alias forsetDriver(String).Returns container overrides associated with this database.org.gradle.api.provider.Property<String> Driver class name used to select the Testcontainers implementation.getName()org.gradle.api.NamedDomainObjectContainer<SchemaExtension> Returns registered schemas for the current database.voidGroovy-friendly variant accepting aClosure.voidschema(String name, org.gradle.api.Action<? super SchemaExtension> action) Declares (or configures) a schema using container semantics.voidschemas(groovy.lang.Closure<?> closure) Groovy-friendly variant accepting aClosure.voidschemas(org.gradle.api.Action<? super org.gradle.api.NamedDomainObjectContainer<SchemaExtension>> action) Provides access to the schema container for DSL-style configuration (schemas { create(...) }).voidSets the driver class name to use for the current database.
-
Constructor Details
-
DatabaseExtension
public DatabaseExtension(@Nonnull String name, @Nonnull org.gradle.api.model.ObjectFactory objects, @Nonnull org.gradle.api.logging.Logger logger) Default constructor.- Parameters:
name- unique database nameobjects- Gradle object factory used to instantiate propertieslogger- to use for logging
-
-
Method Details
-
getDriver
Driver class name used to select the Testcontainers implementation. Build scripts typically set this to eitherorg.postgresql.Driverorcom.mysql.cj.jdbc.Driver.- Returns:
- Gradle property backing the configured driver
-
setDriver
Sets the driver class name to use for the current database.- Parameters:
value- JDBC driver class name
-
driver
Groovy-friendly alias forsetDriver(String).- Parameters:
value- JDBC driver class name
-
container
Configures container-specific overrides (currently only the Docker image) for the current database.- Parameters:
action- configuration block applied to the container specification- See Also:
-
container
public void container(@Nonnull groovy.lang.Closure<?> closure) Groovy-friendly variant accepting aClosure.- Parameters:
closure- configuration block applied to the container specification
-
getContainer
Returns container overrides associated with this database.- Returns:
- container override specification
-
getName
- Specified by:
getNamein interfaceorg.gradle.api.Named
-
schema
public void schema(@Nonnull String name, @Nonnull org.gradle.api.Action<? super SchemaExtension> action) Declares (or configures) a schema using container semantics.- Parameters:
name- unique schema nameaction- configuration block- See Also:
-
schema
Groovy-friendly variant accepting aClosure.- Parameters:
name- unique schema nameclosure- configuration block
-
schemas
public void schemas(@Nonnull org.gradle.api.Action<? super org.gradle.api.NamedDomainObjectContainer<SchemaExtension>> action) Provides access to the schema container for DSL-style configuration (schemas { create(...) }).- Parameters:
action- configuration block
-
schemas
public void schemas(@Nonnull groovy.lang.Closure<?> closure) Groovy-friendly variant accepting aClosure.- Parameters:
closure- configuration block
-
getSchemas
Returns registered schemas for the current database.- Returns:
- immutable view of schema specifications
-
createDatabaseContainer
@Nonnull public AbstractDatabaseContainer createDatabaseContainer(@Nonnull String driverClassName, @Nonnull ClassLoader classLoader) Creates a Testcontainers database container instance for the resolved driver. Invoked byAbstractDatabaseTaskwhenever a schema runs migrations or generates code.- Parameters:
driverClassName- driver requested by the DSL / Flyway configurationclassLoader- to use to find the JDBC driver- Returns:
- database container instance
-
determineContainerImage
Resolves the Docker image that will back the requested JDBC driver. The method honours container-level overrides and falls back to sensible defaults when none are provided.- Parameters:
driverClassName- database driver to inspect- Returns:
- Docker image name that will be used when launching the container
-