Class DatabaseExtension

java.lang.Object
io.github.suppierk.codegen.extensions.DatabaseExtension
All Implemented Interfaces:
org.gradle.api.Named

public class DatabaseExtension extends Object implements 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

    Constructors
    Constructor
    Description
    DatabaseExtension(String name, org.gradle.api.model.ObjectFactory objects, org.gradle.api.logging.Logger logger)
    Default constructor.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    container(groovy.lang.Closure<?> closure)
    Groovy-friendly variant accepting a Closure.
    void
    container(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.
    Resolves the Docker image that will back the requested JDBC driver.
    void
    driver(String value)
    Groovy-friendly alias for setDriver(String).
    Returns container overrides associated with this database.
    org.gradle.api.provider.Property<String>
    Driver class name used to select the Testcontainers implementation.
    org.gradle.api.NamedDomainObjectContainer<SchemaExtension>
    Returns registered schemas for the current database.
    void
    schema(String name, groovy.lang.Closure<?> closure)
    Groovy-friendly variant accepting a Closure.
    void
    schema(String name, org.gradle.api.Action<? super SchemaExtension> action)
    Declares (or configures) a schema using container semantics.
    void
    schemas(groovy.lang.Closure<?> closure)
    Groovy-friendly variant accepting a Closure.
    void
    schemas(org.gradle.api.Action<? super org.gradle.api.NamedDomainObjectContainer<SchemaExtension>> action)
    Provides access to the schema container for DSL-style configuration (schemas { create(...) }).
    void
    Sets the driver class name to use for the current database.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • 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 name
      objects - Gradle object factory used to instantiate properties
      logger - to use for logging
  • Method Details

    • getDriver

      @Nonnull public org.gradle.api.provider.Property<String> getDriver()
      Driver class name used to select the Testcontainers implementation. Build scripts typically set this to either org.postgresql.Driver or com.mysql.cj.jdbc.Driver.
      Returns:
      Gradle property backing the configured driver
    • setDriver

      public void setDriver(@Nonnull String value)
      Sets the driver class name to use for the current database.
      Parameters:
      value - JDBC driver class name
    • driver

      public void driver(@Nonnull String value)
      Groovy-friendly alias for setDriver(String).
      Parameters:
      value - JDBC driver class name
    • container

      public void container(@Nonnull org.gradle.api.Action<? super ContainerExtension> action)
      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 a Closure.
      Parameters:
      closure - configuration block applied to the container specification
    • getContainer

      @Nonnull public ContainerExtension getContainer()
      Returns container overrides associated with this database.
      Returns:
      container override specification
    • getName

      @Nonnull public String getName()
      Specified by:
      getName in interface org.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 name
      action - configuration block
      See Also:
    • schema

      public void schema(@Nonnull String name, @Nonnull groovy.lang.Closure<?> closure)
      Groovy-friendly variant accepting a Closure.
      Parameters:
      name - unique schema name
      closure - 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 a Closure.
      Parameters:
      closure - configuration block
    • getSchemas

      @Nonnull public org.gradle.api.NamedDomainObjectContainer<SchemaExtension> 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 by AbstractDatabaseTask whenever a schema runs migrations or generates code.
      Parameters:
      driverClassName - driver requested by the DSL / Flyway configuration
      classLoader - to use to find the JDBC driver
      Returns:
      database container instance
    • determineContainerImage

      @Nonnull public String determineContainerImage(@Nonnull String driverClassName)
      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