From 1de75e93de97c9966741b90a694f2ddb6f1f24bc Mon Sep 17 00:00:00 2001
From: "Mr.xiaoZH" <15202822317@163.com>
Date: Fri, 25 Jul 2025 11:49:50 +0800
Subject: [PATCH] =?UTF-8?q?magic=E5=A2=9E=E5=8A=A0clickhouse=E6=95=B0?=
=?UTF-8?q?=E6=8D=AE=E5=BA=93=E7=9A=84=E6=95=B0=E6=8D=AE=E6=BA=90=E6=94=AF?=
=?UTF-8?q?=E6=8C=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../magic-api-plugin-clickhouse/pom.xml | 39 ++++++++++++
.../clickhouse/ClickHouseFunction.java | 42 +++++++++++++
.../magicapi/clickhouse/ClickHouseModule.java | 60 +++++++++++++++++++
.../clickhouse/ClickHouseProperties.java | 38 ++++++++++++
.../MagicClickHouseConfiguration.java | 34 +++++++++++
magic-api-plugins/pom.xml | 1 +
.../modules/db/dialect/ClickhouseDialect.java | 26 +++++++-
7 files changed, 239 insertions(+), 1 deletion(-)
create mode 100644 magic-api-plugins/magic-api-plugin-clickhouse/pom.xml
create mode 100644 magic-api-plugins/magic-api-plugin-clickhouse/src/main/java/org/ssssssss/magicapi/clickhouse/ClickHouseFunction.java
create mode 100644 magic-api-plugins/magic-api-plugin-clickhouse/src/main/java/org/ssssssss/magicapi/clickhouse/ClickHouseModule.java
create mode 100644 magic-api-plugins/magic-api-plugin-clickhouse/src/main/java/org/ssssssss/magicapi/clickhouse/ClickHouseProperties.java
create mode 100644 magic-api-plugins/magic-api-plugin-clickhouse/src/main/java/org/ssssssss/magicapi/clickhouse/MagicClickHouseConfiguration.java
diff --git a/magic-api-plugins/magic-api-plugin-clickhouse/pom.xml b/magic-api-plugins/magic-api-plugin-clickhouse/pom.xml
new file mode 100644
index 00000000..87748149
--- /dev/null
+++ b/magic-api-plugins/magic-api-plugin-clickhouse/pom.xml
@@ -0,0 +1,39 @@
+
+
+
+ magic-api-plugins
+ org.ssssssss
+ 2.2.2
+
+ 4.0.0
+ magic-api-plugin-clickhouse
+ magic-api-plugin-clickhouse
+ magic-api clickhouse plugin
+
+
+
+ org.ssssssss
+ magic-api
+
+
+ com.clickhouse
+ clickhouse-jdbc
+ 0.4.6
+ true
+
+
+
+ org.lz4
+ lz4-java
+ 1.8.0
+ true
+
+
+ org.springframework.boot
+ spring-boot-autoconfigure
+ true
+
+
+
\ No newline at end of file
diff --git a/magic-api-plugins/magic-api-plugin-clickhouse/src/main/java/org/ssssssss/magicapi/clickhouse/ClickHouseFunction.java b/magic-api-plugins/magic-api-plugin-clickhouse/src/main/java/org/ssssssss/magicapi/clickhouse/ClickHouseFunction.java
new file mode 100644
index 00000000..a45406cc
--- /dev/null
+++ b/magic-api-plugins/magic-api-plugin-clickhouse/src/main/java/org/ssssssss/magicapi/clickhouse/ClickHouseFunction.java
@@ -0,0 +1,42 @@
+package org.ssssssss.magicapi.clickhouse;
+
+import org.ssssssss.magicapi.core.config.MagicFunction;
+import org.ssssssss.script.annotation.Comment;
+import org.ssssssss.script.annotation.Function;
+
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+
+public class ClickHouseFunction implements MagicFunction {
+
+ @Function
+ @Comment("格式化ClickHouse日期时间")
+ public static String formatDateTime(Object dateTime, String pattern) {
+ if (dateTime instanceof LocalDateTime) {
+ return ((LocalDateTime) dateTime).format(DateTimeFormatter.ofPattern(pattern));
+ }
+ return dateTime.toString();
+ }
+
+ @Function
+ @Comment("生成ClickHouse UUID")
+ public static String generateUUID() {
+ return java.util.UUID.randomUUID().toString();
+ }
+
+ @Function
+ @Comment("转换为ClickHouse数组格式")
+ public static String toArray(Object... values) {
+ StringBuilder sb = new StringBuilder("[");
+ for (int i = 0; i < values.length; i++) {
+ if (i > 0) sb.append(",");
+ if (values[i] instanceof String) {
+ sb.append("'").append(values[i]).append("'");
+ } else {
+ sb.append(values[i]);
+ }
+ }
+ sb.append("]");
+ return sb.toString();
+ }
+}
\ No newline at end of file
diff --git a/magic-api-plugins/magic-api-plugin-clickhouse/src/main/java/org/ssssssss/magicapi/clickhouse/ClickHouseModule.java b/magic-api-plugins/magic-api-plugin-clickhouse/src/main/java/org/ssssssss/magicapi/clickhouse/ClickHouseModule.java
new file mode 100644
index 00000000..dccbc5a5
--- /dev/null
+++ b/magic-api-plugins/magic-api-plugin-clickhouse/src/main/java/org/ssssssss/magicapi/clickhouse/ClickHouseModule.java
@@ -0,0 +1,60 @@
+package org.ssssssss.magicapi.clickhouse;
+
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.ssssssss.magicapi.core.annotation.MagicModule;
+import org.ssssssss.script.annotation.Comment;
+
+import javax.sql.DataSource;
+import java.util.List;
+import java.util.Map;
+
+@MagicModule("clickhouse")
+public class ClickHouseModule {
+
+ private final JdbcTemplate jdbcTemplate;
+
+ public ClickHouseModule(JdbcTemplate jdbcTemplate) {
+ this.jdbcTemplate = jdbcTemplate;
+ }
+
+ @Comment("执行ClickHouse查询")
+ public List