From 1c3bd44d661ee9e6caddebbcc10608ca04f7f34a Mon Sep 17 00:00:00 2001 From: Fabian Kovacs Date: Mon, 8 Jun 2026 15:55:34 +0200 Subject: [PATCH] Allow optional usage of propertiesFile in DatabaseConnectionConfig. --- .../config/DatabaseConnectionConfig.java | 42 ++++++++++++------- 1 file changed, 26 insertions(+), 16 deletions(-) diff --git a/backend/src/main/java/com/bakdata/conquery/models/config/DatabaseConnectionConfig.java b/backend/src/main/java/com/bakdata/conquery/models/config/DatabaseConnectionConfig.java index 4e7d9c0a1f..61a152bb3d 100644 --- a/backend/src/main/java/com/bakdata/conquery/models/config/DatabaseConnectionConfig.java +++ b/backend/src/main/java/com/bakdata/conquery/models/config/DatabaseConnectionConfig.java @@ -4,14 +4,10 @@ import com.zaxxer.hikari.HikariConfig; import com.zaxxer.hikari.HikariDataSource; import io.dropwizard.util.Duration; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.ToString; +import jakarta.validation.constraints.NotNull; +import lombok.*; import lombok.extern.jackson.Jacksonized; import lombok.extern.slf4j.Slf4j; -import org.jooq.DSLContext; /** * Connection properties for a SQL database. @@ -31,8 +27,18 @@ public class DatabaseConnectionConfig { /** * SQL vendor specific dialect used to transform queries to SQL */ + @NotNull private Dialect dialect; + /** + * Name of the column which is shared among the table and all aggregations are grouped by. + */ + @Builder.Default + @NotNull + private String primaryColumn = DEFAULT_PRIMARY_COLUMN; + + private String propertiesFile; + /** * Username used to connect to the database. */ @@ -52,18 +58,22 @@ public class DatabaseConnectionConfig { private Duration connectivityTimeout; - /** - * Name of the column which is shared among the table and all aggregations are grouped by. - */ - @Builder.Default - private String primaryColumn = DEFAULT_PRIMARY_COLUMN; - public HikariDataSource createDataSource(HealthCheckRegistry healthCheckRegistry) { - HikariConfig hikariConfig = new HikariConfig(); - hikariConfig.setJdbcUrl(getJdbcConnectionUrl()); - hikariConfig.setUsername(getDatabaseUsername()); - hikariConfig.setPassword(getDatabasePassword()); + + // If propertiesFile is provided start with that and overwrite with internal settings. Allows us to use both. + HikariConfig hikariConfig = propertiesFile != null ? new HikariConfig(propertiesFile) : new HikariConfig(); + + if (getJdbcConnectionUrl() != null) { + hikariConfig.setJdbcUrl(getJdbcConnectionUrl()); + } + + if (getDatabaseUsername() != null) { + hikariConfig.setUsername(getDatabaseUsername()); + } + if (getDatabasePassword() != null) { + hikariConfig.setPassword(getDatabasePassword()); + } if (healthCheckRegistry != null) { hikariConfig.setHealthCheckRegistry(healthCheckRegistry);