diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/ClickHouseConfig.java b/cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/ClickHouseConfig.java index 413102df..663d160f 100644 --- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/ClickHouseConfig.java +++ b/cameleer3-server-app/src/main/java/com/cameleer3/server/app/config/ClickHouseConfig.java @@ -3,9 +3,11 @@ package com.cameleer3.server.app.config; import com.zaxxer.hikari.HikariDataSource; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; import org.springframework.jdbc.core.JdbcTemplate; import javax.sql.DataSource; @@ -15,6 +17,22 @@ import javax.sql.DataSource; @ConditionalOnProperty(name = "clickhouse.enabled", havingValue = "true") public class ClickHouseConfig { + /** + * Explicit primary PG DataSource. Required because adding a second DataSource + * (ClickHouse) prevents Spring Boot auto-configuration from creating the default one. + */ + @Bean + @Primary + public DataSource dataSource(DataSourceProperties properties) { + return properties.initializeDataSourceBuilder().build(); + } + + @Bean + @Primary + public JdbcTemplate jdbcTemplate(DataSourceProperties properties) { + return new JdbcTemplate(dataSource(properties)); + } + @Bean(name = "clickHouseDataSource") public DataSource clickHouseDataSource(ClickHouseProperties props) { HikariDataSource ds = new HikariDataSource();