Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add: 新增easy-orm对clickhouse支持 #1

Open
wants to merge 16 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
112 changes: 0 additions & 112 deletions README.md

This file was deleted.

30 changes: 30 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>org.hswebframework</groupId>
<artifactId>hsweb-incubator-easyorm-clickhouse</artifactId>
<version>1.0-SNAPSHOT</version>

<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<hsweb.framework.version>4.0.17-SNAPSHOT</hsweb.framework.version>
</properties>

<dependencies>
<dependency>
<groupId>org.hswebframework.web</groupId>
<artifactId>hsweb-commons-crud</artifactId>
<version>${hsweb.framework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webflux</artifactId>
<version>5.3.25</version>
</dependency>
</dependencies>

</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
package org.hswebframework.ezorm.rdb.metadata.dialect;

import org.hswebframework.ezorm.core.meta.Feature;
import org.hswebframework.ezorm.core.utils.StringUtils;
import org.hswebframework.ezorm.rdb.metadata.DataType;
import org.hswebframework.ezorm.rdb.metadata.RDBColumnMetadata;
import org.hswebframework.ezorm.rdb.metadata.RDBFeatureType;
import org.hswebframework.ezorm.rdb.metadata.dialect.DataTypeBuilder;
import org.hswebframework.ezorm.rdb.supports.clickhouse.ClickhouseDialect;

import java.sql.SQLType;
import java.util.Optional;

/**
* @author dengpengyu
* @date 2023/9/18 16:14
*/
public interface Dialect extends Feature {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

看上去不应该复制(覆盖)这个类

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

好的


@Override
default RDBFeatureType getType() {
return RDBFeatureType.dialect;
}

void addDataTypeBuilder(String typeId, DataTypeBuilder mapper);

String buildColumnDataType(RDBColumnMetadata columnMetaData);

String getQuoteStart();

String getQuoteEnd();

String clearQuote(String string);

boolean isColumnToUpperCase();

Optional<SQLType> convertSqlType(Class<?> type);

DataType convertDataType(String dataType);

default String quote(String keyword, boolean changeCase) {
if (keyword.startsWith(getQuoteStart()) && keyword.endsWith(getQuoteEnd())) {
return keyword;
}
return StringUtils.concat(
getQuoteStart(),
isColumnToUpperCase() && changeCase ? keyword.toUpperCase() : keyword,
getQuoteEnd()
);
}

default String quote(String keyword) {
return quote(keyword, true);
}

default String buildColumnFullName(String tableName, String columnName) {
if (columnName.contains(".")) {
return columnName;
}
if (StringUtils.isNullOrEmpty(tableName)) {
return StringUtils.concat(getQuoteStart(), isColumnToUpperCase() ? columnName.toUpperCase() : columnName, getQuoteEnd());
}
return StringUtils.concat(tableName, ".", getQuoteStart(), isColumnToUpperCase() ? columnName.toUpperCase() : columnName, getQuoteEnd());
}

ClickhouseDialect CLICKHOUSE = new ClickhouseDialect();

}

Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

import java.sql.Date;
import java.sql.JDBCType;

/**
* @className ClickhouseDire
* @Description TODO
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,11 @@ protected <E> Flux<E> convertQueryResult(JSONObject result, ResultWrapper<E, ?>
for (int i = 0; i < columns.size(); i++) {
String property = columns.get(i);
Object value = row.get(property);
if ("total".equals(property)) {
value = Long.valueOf(row.get(property).toString());
} else {
value = row.get(property);
}
DefaultColumnWrapperContext<E> context = new DefaultColumnWrapperContext<>(i, property, value, rowInstance);
wrapper.wrapColumn(context);
rowInstance = context.getRowInstance();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import org.hswebframework.ezorm.rdb.metadata.RDBSchemaMetadata;
import org.hswebframework.ezorm.rdb.metadata.RDBTableMetadata;
import org.hswebframework.ezorm.rdb.operator.CompositeExceptionTranslation;
import org.hswebframework.ezorm.rdb.operator.builder.fragments.update.DefaultUpdateSqlBuilder;

import org.hswebframework.ezorm.rdb.supports.clickhouse.sqlBuilder.ClickhouseDeleteSqlBuilder;
import org.hswebframework.ezorm.rdb.supports.clickhouse.sqlBuilder.ClickhouseUpdateSqlBuilder;
import org.hswebframework.ezorm.rdb.supports.mysql.*;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package org.hswebframework.ezorm.rdb.supports.clickhouse.sqlBuilder;

import lombok.AllArgsConstructor;

import org.apache.commons.collections.CollectionUtils;
import org.hswebframework.ezorm.core.param.Term;
import org.hswebframework.ezorm.rdb.executor.SqlRequest;
Expand All @@ -10,10 +9,8 @@
import org.hswebframework.ezorm.rdb.operator.builder.fragments.*;
import org.hswebframework.ezorm.rdb.operator.builder.fragments.delete.DeleteSqlBuilder;
import org.hswebframework.ezorm.rdb.operator.builder.fragments.term.ForeignKeyTermFragmentBuilder;

import org.hswebframework.ezorm.rdb.operator.dml.delete.DeleteOperatorParameter;


import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
/**
* @author dengpengyu
*/

/**
* @className ClickhouseUpdateSqlBuilder
* @Description TODO
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
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;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
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
* @date 2023/9/13 15:29
*/
@Data
@ConfigurationProperties(prefix = "spring.clickhouse")
@Component
public class ClickhouseProperties {
public class
ClickhouseProperties {

private String url;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,8 @@
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.ClickhouseDialect;
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;
import org.hswebframework.ezorm.rdb.supports.oracle.OracleSchemaMetadata;
import org.hswebframework.ezorm.rdb.supports.postgres.PostgresqlSchemaMetadata;
import org.springframework.boot.context.properties.ConfigurationProperties;

import java.util.Arrays;
Expand All @@ -23,7 +19,7 @@
@Data
public class EasyormProperties {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

不应该覆盖原是包名以及类

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

好的


private String defaultSchema="PUBLIC";
private String defaultSchema = "PUBLIC";

private String[] schemas = {};

Expand All @@ -33,7 +29,7 @@ public class EasyormProperties {

private boolean allowTypeAlter = true;

private DialectEnum dialect = DialectEnum.h2;
private DialectEnum dialect = DialectEnum.clickhouse;

private Class<? extends Dialect> dialectType;

Expand Down Expand Up @@ -76,43 +72,12 @@ public Dialect createDialect() {
@Getter
@AllArgsConstructor
public enum DialectEnum {
mysql(Dialect.MYSQL, "?") {
@Override
public RDBSchemaMetadata createSchema(String name) {
return new MysqlSchemaMetadata(name);
}
},
mssql(Dialect.MSSQL, "@arg") {
@Override
public RDBSchemaMetadata createSchema(String name) {
return new SqlServerSchemaMetadata(name);
}
},
oracle(Dialect.ORACLE, "?") {
@Override
public RDBSchemaMetadata createSchema(String name) {
return new OracleSchemaMetadata(name);
}
},
postgres(Dialect.POSTGRES, "$") {
@Override
public RDBSchemaMetadata createSchema(String name) {
return new PostgresqlSchemaMetadata(name);
}
},
h2(Dialect.H2, "$") {
@Override
public RDBSchemaMetadata createSchema(String name) {
return new H2SchemaMetadata(name);
}
},
clickhouse(Dialect.CLICKHOUSE,"?"){
clickhouse(Dialect.CLICKHOUSE, "?") {
@Override
public RDBSchemaMetadata createSchema(String name) {
return new ClickhouseSchemaMetadata(name);
}
}
;
};

private Dialect dialect;
private String bindSymbol;
Expand Down
3 changes: 3 additions & 0 deletions src/main/resources/META-INF/spring.factories
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Auto Configure
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

spring 2.7已经弃用了这种配置方式,应当使用

META-INF
     |--- spring
     |------org.springframework.boot.autoconfigure.AutoConfiguration.imports     

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

好的

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.hswebframework.web.crud.configuration.ClickhouseHttpSqlExecutorConfiguration