From 91ce6d1956eb9cfaa434fece3744132f0991b1c8 Mon Sep 17 00:00:00 2001 From: PengyuDeng <89559616+PengyuDeng@users.noreply.github.com> Date: Thu, 7 Sep 2023 16:18:03 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E5=AF=B9hsweb-easy-o?= =?UTF-8?q?rm-clickhouse=E7=9A=84=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...lickhouseHttpSqlExecutorConfiguration.java | 40 +++++++++++++++++++ .../configuration/ClickhouseProperties.java | 22 ++++++++++ .../crud/configuration/EasyormProperties.java | 7 ++++ .../main/resources/META-INF/spring.factories | 1 + 4 files changed, 70 insertions(+) create mode 100644 hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/configuration/ClickhouseHttpSqlExecutorConfiguration.java create mode 100644 hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/configuration/ClickhouseProperties.java diff --git a/hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/configuration/ClickhouseHttpSqlExecutorConfiguration.java b/hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/configuration/ClickhouseHttpSqlExecutorConfiguration.java new file mode 100644 index 000000000..afb73646d --- /dev/null +++ b/hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/configuration/ClickhouseHttpSqlExecutorConfiguration.java @@ -0,0 +1,40 @@ +package org.hswebframework.web.crud.configuration; + +import org.hswebframework.ezorm.rdb.executor.SyncSqlExecutor; +import org.hswebframework.ezorm.rdb.executor.reactive.ReactiveSqlExecutor; +import org.hswebframework.ezorm.rdb.executor.reactive.ReactiveSyncSqlExecutor; +import org.hswebframework.ezorm.rdb.supports.clickhouse.ClickhouseRestfulSqlExecutor; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.reactive.function.client.WebClient; + + +/** + * @author dengpengyu + */ +@Configuration +@EnableConfigurationProperties(ClickhouseProperties.class) +//@ConditionalOnMissingBean(ConnectionFactory.class) +public class ClickhouseHttpSqlExecutorConfiguration { + @Bean + @ConditionalOnMissingBean + public ReactiveSqlExecutor reactiveSqlExecutor(ClickhouseProperties properties) { + + WebClient clickhouseWebClient = WebClient + .builder() + .baseUrl(properties.getUrl()) + .defaultHeader("X-ClickHouse-User", properties.getUsername()) + .defaultHeader("X-ClickHouse-Key", properties.getPassword()) + .build(); + + return new ClickhouseRestfulSqlExecutor(clickhouseWebClient); + } + + @Bean + @ConditionalOnMissingBean + public SyncSqlExecutor syncSqlExecutor(ReactiveSqlExecutor reactiveSqlExecutor) { + return ReactiveSyncSqlExecutor.of(reactiveSqlExecutor); + } +} \ No newline at end of file diff --git a/hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/configuration/ClickhouseProperties.java b/hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/configuration/ClickhouseProperties.java new file mode 100644 index 000000000..f99a48ba9 --- /dev/null +++ b/hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/configuration/ClickhouseProperties.java @@ -0,0 +1,22 @@ +package org.hswebframework.web.crud.configuration; + + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @author dengpengyu + * @date 2023/9/6 14:08 + */ +@Data +@ConfigurationProperties(prefix = "spring.clickhouse") +@Component +public class ClickhouseProperties { + + private String url; + + private String username; + + private String password; +} diff --git a/hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/configuration/EasyormProperties.java b/hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/configuration/EasyormProperties.java index ee4e0d2b3..67e85be7d 100644 --- a/hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/configuration/EasyormProperties.java +++ b/hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/configuration/EasyormProperties.java @@ -7,6 +7,7 @@ import org.hswebframework.ezorm.rdb.metadata.RDBDatabaseMetadata; import org.hswebframework.ezorm.rdb.metadata.RDBSchemaMetadata; import org.hswebframework.ezorm.rdb.metadata.dialect.Dialect; +import org.hswebframework.ezorm.rdb.supports.clickhouse.ClickhouseSchemaMetadata; import org.hswebframework.ezorm.rdb.supports.h2.H2SchemaMetadata; import org.hswebframework.ezorm.rdb.supports.mssql.SqlServerSchemaMetadata; import org.hswebframework.ezorm.rdb.supports.mysql.MysqlSchemaMetadata; @@ -105,6 +106,12 @@ public RDBSchemaMetadata createSchema(String name) { return new H2SchemaMetadata(name); } }, + clickhouse(Dialect.clickhouse,"?"){ + @Override + public RDBSchemaMetadata createSchema(String name) { + return new ClickhouseSchemaMetadata(name); + } + } ; private Dialect dialect; diff --git a/hsweb-commons/hsweb-commons-crud/src/main/resources/META-INF/spring.factories b/hsweb-commons/hsweb-commons-crud/src/main/resources/META-INF/spring.factories index 0fe7a61e4..ff79edb39 100644 --- a/hsweb-commons/hsweb-commons-crud/src/main/resources/META-INF/spring.factories +++ b/hsweb-commons/hsweb-commons-crud/src/main/resources/META-INF/spring.factories @@ -3,5 +3,6 @@ org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ org.hswebframework.web.crud.configuration.EasyormConfiguration,\ org.hswebframework.web.crud.configuration.JdbcSqlExecutorConfiguration,\ org.hswebframework.web.crud.configuration.R2dbcSqlExecutorConfiguration,\ +org.hswebframework.web.crud.configuration.ClickhouseHttpSqlExecutorConfiguration,\ org.hswebframework.web.crud.web.CommonWebFluxConfiguration,\ org.hswebframework.web.crud.web.CommonWebMvcConfiguration \ No newline at end of file