fromDataSource

fun fromDataSource(dataSource: DataSource, packagesToScan: List<String>, dbSchemas: List<String>, dynamicDtoStrategy: DynamicDtoSerializationStrategy = DynamicDtoSerializationStrategy.AUTOMATIC_WHEN_UNAMBIGUOUS, disableCoreTypeInitialization: Boolean = false, showBanner: Boolean = true, transactionProvider: JdbcTransactionProvider? = null, listenerConnectionFactory: () -> Connection? = null, migrationRunner: (DataSource) -> Unit? = null, onClose: () -> Unit? = null): DataAccess

Initializes DataAccess using an existing DataSource.

This method provides fine-grained control over the initialization process and is suitable for environments where the DataSource is managed externally (e.g., by a DI container like Spring or a JavaEE application server).

The initialization sequence includes:

  1. Core Type Initialization: Ensures framework-specific types (like dynamic_dto) exist.

  2. Database Migrations: Runs optional user-defined migrations via migrationRunner.

  3. Type Registry Loading: Scans the database and classpath to build a type metadata map.

  4. Converter Setup: Initializes bidirectional Kotlin-to-PostgreSQL mapping logic.

Return

A fully initialized DataAccess instance.

Parameters

dataSource

The pre-configured DataSource to use for all database operations.

packagesToScan

List of package names to scan for annotated classes (@PgEnum, @PgComposite, etc.).

dbSchemas

List of database schemas to scan for type definitions.

dynamicDtoStrategy

Strategy for handling Dynamic DTO serialization. Defaults to DynamicDtoSerializationStrategy.AUTOMATIC_WHEN_UNAMBIGUOUS.

disableCoreTypeInitialization

If true, skip ensuring framework-specific types exist.

showBanner

If true, prints the Octavius banner to standard output upon successful initialization.

transactionProvider

Optional custom transaction manager. Defaults to DefaultJdbcTransactionProvider.

listenerConnectionFactory

Optional factory for creating dedicated connections for LISTEN/NOTIFY. If null, a default strategy is used (direct DriverManager for Hikari, otherwise directly from DataSource).

onClose

Optional callback executed when the returned DataAccess is closed.