feature(info-query): 增加hudi表类型过滤
This commit is contained in:
@@ -1,8 +1,12 @@
|
||||
import club.kingon.sql.builder.SelectSqlBuilder;
|
||||
import club.kingon.sql.builder.SqlBuilder;
|
||||
import club.kingon.sql.builder.entry.Alias;
|
||||
import club.kingon.sql.builder.entry.Column;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.db.sql.SqlFormatter;
|
||||
import org.eclipse.collections.api.factory.Lists;
|
||||
import org.eclipse.collections.api.list.ImmutableList;
|
||||
|
||||
import static com.eshore.odcp.hudi.connector.Constants.DATABASE_NAME;
|
||||
|
||||
@@ -24,9 +28,11 @@ public class SqlBuilderTests {
|
||||
private static final String TABLE_INFO_ALIAS = column(TABLE_INFO, "alias");
|
||||
private static final String TABLE_INFO_PRIORITY = column(TABLE_INFO, "priority");
|
||||
private static final String TABLE_INFO_STATUS = column(TABLE_INFO, "status");
|
||||
private static final String TABLE_INFO_TARGET_TABLE_TYPE = column(TABLE_INFO, "tgt_table_type");
|
||||
|
||||
private static final Alias TABLE_SYNC_STATE = Alias.of(StrUtil.format("{}.tb_app_hudi_sync_state", DATABASE_NAME), "tahss");
|
||||
private static final String TABLE_SYNC_STATE_ID = column(TABLE_SYNC_STATE, "id");
|
||||
private static final String TABLE_SYNC_STATE_COMPACTION_STATE = column(TABLE_SYNC_STATE, "compaction_status");
|
||||
|
||||
private static String column(Alias table, String column) {
|
||||
return StrUtil.format("{}.{}", table.getAlias(), column);
|
||||
@@ -40,15 +46,62 @@ public class SqlBuilderTests {
|
||||
private static final Alias TABLE_FLINK_JOB = Alias.of(StrUtil.format("{}.tb_app_flink_job_config", DATABASE_NAME), "tafjc");
|
||||
private static final String TABLE_FLINK_JOB_ID = column(TABLE_FLINK_JOB, "id");
|
||||
private static final String TABLE_FLINK_JOB_STATUS = column(TABLE_FLINK_JOB, "status");
|
||||
private static final String TABLE_FLINK_JOB_RUN_MODE = column(TABLE_FLINK_JOB, "run_mode");
|
||||
|
||||
private static SqlBuilder generateJobIdAndAliasCriteria(
|
||||
SelectSqlBuilder builder,
|
||||
Integer page,
|
||||
Integer count,
|
||||
Long flinkJobId,
|
||||
String alias,
|
||||
String order,
|
||||
String direction,
|
||||
ImmutableList<String> selectHudiTableType,
|
||||
ImmutableList<String> selectedRunMode,
|
||||
ImmutableList<String> selectedCompactionStatus,
|
||||
boolean limited
|
||||
) {
|
||||
int limit = Math.max(count, 1);
|
||||
int offset = limit * Math.max(page - 1, 0);
|
||||
return builder.from(TABLE_FLINK_JOB, TABLE_INFO, TABLE_SYNC_STATE)
|
||||
.whereEq(TABLE_FLINK_JOB_ID, Column.as(TABLE_INFO_FLINK_JOB_ID))
|
||||
.andEq(TABLE_SYNC_STATE_ID, Column.as(StrUtil.format("concat({}, '-', {})", TABLE_FLINK_JOB_ID, TABLE_INFO_ALIAS)))
|
||||
.andLike(ObjectUtil.isNotNull(flinkJobId), TABLE_FLINK_JOB_ID, flinkJobId)
|
||||
.andLike(ObjectUtil.isNotNull(alias), TABLE_INFO_ALIAS, alias)
|
||||
.andIn(ObjectUtil.isNotEmpty(selectHudiTableType), TABLE_INFO_TARGET_TABLE_TYPE, selectHudiTableType)
|
||||
.andIn(ObjectUtil.isNotEmpty(selectedRunMode), TABLE_FLINK_JOB_RUN_MODE, selectedRunMode)
|
||||
.andIn(ObjectUtil.isNotEmpty(selectedCompactionStatus), TABLE_SYNC_STATE_COMPACTION_STATE, selectedCompactionStatus)
|
||||
.orderBy(StrUtil.isNotBlank(order) && StrUtil.isNotBlank(direction), () -> StrUtil.format("{} {}", order, direction))
|
||||
.limit(limited, offset, limit);
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
System.out.println(SqlFormatter.format(
|
||||
SqlBuilder.select(StrUtil.format("distinct {}", TABLE_INFO_ALIAS))
|
||||
.from(TABLE_INFO, TABLE_FLINK_JOB)
|
||||
.whereEq(TABLE_INFO_FLINK_JOB_ID, Column.as(TABLE_FLINK_JOB_ID))
|
||||
.andEq(TABLE_FLINK_JOB_STATUS, "y")
|
||||
.andEq(TABLE_INFO_STATUS, "y")
|
||||
.build()
|
||||
/*SqlBuilder.select(StrUtil.format("distinct {}", TABLE_INFO_ALIAS))
|
||||
.from(TABLE_FLINK_JOB, TABLE_INFO, TABLE_SYNC_STATE)
|
||||
.whereEq(TABLE_FLINK_JOB_ID, Column.as(TABLE_INFO_FLINK_JOB_ID))
|
||||
.andEq(TABLE_SYNC_STATE_ID, StrUtil.format("concat({}, '-', {})", TABLE_FLINK_JOB_ID, TABLE_INFO_ALIAS))
|
||||
.andLike(ObjectUtil.isNotNull(flinkJobId), TABLE_FLINK_JOB_ID, flinkJobId)
|
||||
.andLike(ObjectUtil.isNotNull(alias), TABLE_INFO_ALIAS, alias)
|
||||
.andIn(ObjectUtil.isNotEmpty(selectHudiTableType), TABLE_INFO_TARGET_TABLE_TYPE, selectHudiTableType)
|
||||
.andIn(ObjectUtil.isNotEmpty(selectedRunMode), TABLE_FLINK_JOB_RUN_MODE, selectedRunMode)
|
||||
.andIn(ObjectUtil.isNotEmpty(selectedCompactionStatus), TABLE_SYNC_STATE_COMPACTION_STATE, selectedCompactionStatus)
|
||||
.orderBy(StrUtil.isNotBlank(order) && StrUtil.isNotBlank(direction), () -> StrUtil.format("{} {}", order, direction))
|
||||
.limit(limited, offset, limit)
|
||||
.build()*/
|
||||
generateJobIdAndAliasCriteria(
|
||||
SqlBuilder.selectAll(),
|
||||
1,
|
||||
10,
|
||||
1000L,
|
||||
"hello",
|
||||
"dog",
|
||||
"asc",
|
||||
Lists.immutable.of("MOR"),
|
||||
Lists.immutable.of("ONE_IN_ONE", "ALL_IN_ONE"),
|
||||
Lists.immutable.of("COMPLETE"),
|
||||
true
|
||||
).build()
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user