package functions import ( "log" "git.x2erp.com/qdy/go-base/types" "git.x2erp.com/qdy/go-db/factory/database" "github.com/gin-gonic/gin" ) // 定义表结构 type tableDDL struct { TableName string SQL string } // 最简单的使用方式 - 直接在代码中维护 func ExecuteDDLHandler(dbFactory *database.DBFactory) func(c *gin.Context) { return func(c *gin.Context) { tables := getTableDDLs() success := []string{} failures := map[string]string{} // 直接遍历 tables 切片 for _, table := range tables { if err := dbFactory.ExecuteDDL(table.SQL); err != nil { failures[table.TableName] = err.Error() log.Printf("[%s] 失败: %v", table.TableName, err) } else { success = append(success, table.TableName) log.Printf("[%s] 成功", table.TableName) } } successState := true if len(failures) > 0 { successState = false // 这里用 = 赋值,不是 := } c.JSON(200, types.QueryResult{ Success: successState, Data: gin.H{ "success": success, "failures": failures, }, }) } } // 获取所有表定义 func getTableDDLs() []tableDDL { return []tableDDL{ { TableName: "etl_service", SQL: ` CREATE TABLE IF NOT EXISTS etl_service ( service_id VARCHAR(128) PRIMARY KEY, service_name VARCHAR(128) NOT NULL, service_ip VARCHAR(50) NOT NULL, service_port INTEGER NOT NULL, create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); `, }, { TableName: "etl_agent", SQL: ` CREATE TABLE IF NOT EXISTS etl_agent ( agent_id VARCHAR(50) PRIMARY KEY, agent_name VARCHAR(128) NOT NULL, agent_url VARCHAR(512) NOT NULL, agent_token VARCHAR(512) NOT NULL, agent_database_type VARCHAR(50) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); `, }, { TableName: "etl_table", SQL: ` CREATE TABLE IF NOT EXISTS etl_table ( table_id VARCHAR(50) PRIMARY KEY, table_tag VARCHAR(512) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); `, }, { TableName: "etl_table_field", SQL: ` CREATE TABLE IF NOT EXISTS etl_table_field ( system_id VARCHAR(128) PRIMARY KEY, table_id VARCHAR(50) NOT NULL, field_id VARCHAR(50) NOT NULL, field_type VARCHAR(50) NOT NULL, field_default VARCHAR(50) NOT NULL, field_tag VARCHAR(512) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); `, }, { TableName: "etl_sql", SQL: ` CREATE TABLE IF NOT EXISTS etl_sql ( sql_id VARCHAR(128) PRIMARY KEY, agent_id VARCHAR(50) NOT NULL, table_id VARCHAR(50) NOT NULL, where_field_name VARCHAR(50) NOT NULL, where_field_type VARCHAR(50) NOT NULL, sql_tag VARCHAR(512) NULL, data_sql VARCHAR NOT NULL, cunt_sql VARCHAR NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); `, }, //参数配置表 { TableName: "etl_config", SQL: ` CREATE TABLE IF NOT EXISTS etl_config ( config_id VARCHAR(50) PRIMARY KEY, config_type VARCHAR(50) NOT NULL, config_value VARCHAR(128) NOT NULL, config_default_value VARCHAR(128) NOT NULL, config_tag VARCHAR(128) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); `, }, //任务表-count { TableName: "etl_task_count", SQL: ` CREATE TABLE IF NOT EXISTS etl_task_count ( task_id VARCHAR(38) PRIMARY KEY, sql_id VARCHAR(50) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); `, }, //任务表-data { TableName: "etl_task_data", SQL: ` CREATE TABLE IF NOT EXISTS etl_task_data ( task_id VARCHAR(38) PRIMARY KEY, sql_id VARCHAR(50) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); `, }, //任务表-count_log { TableName: "etl_task_count_log", SQL: ` CREATE TABLE IF NOT EXISTS etl_task_count_log ( log_id VARCHAR(50) PRIMARY KEY, task_id VARCHAR(38) NOT NULL, sql_id VARCHAR(50) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); `, }, //任务表-data_log { TableName: "etl_task_data_log", SQL: ` CREATE TABLE IF NOT EXISTS etl_task_data_log ( log_id VARCHAR(50) PRIMARY KEY, task_id VARCHAR(38) NOT NULL, sql_id VARCHAR(50) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); `, }, //任务表-count_queue { TableName: "etl_task_queue", SQL: ` CREATE TABLE IF NOT EXISTS etl_task_queue ( system_id VARCHAR(50) PRIMARY KEY, task_id VARCHAR(38) NOT NULL, queue_id VARCHAR(38) NOT NULL, sql_id VARCHAR(50) NOT NULL, task_type INTEGER NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); `, }, //任务表-count_queue { TableName: "etl_task_queue_log", SQL: ` CREATE TABLE IF NOT EXISTS etl_task_queue_log ( system_id VARCHAR(50) PRIMARY KEY, task_queue_id VARCHAR(50) PRIMARY KEY, task_id VARCHAR(38) NOT NULL, queue_id VARCHAR(38) NOT NULL, sql_id VARCHAR(50) NOT NULL, task_type INTEGER NOT NULL, task_data VARCHAR NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); `, }, //任务表-count_queue { TableName: "etl_task_queue_success_log", SQL: ` CREATE TABLE IF NOT EXISTS etl_task_queue_success_log ( system_id VARCHAR(50) PRIMARY KEY, task_queue_id VARCHAR(50) PRIMARY KEY, task_id VARCHAR(38) NOT NULL, queue_id VARCHAR(38) NOT NULL, sql_id VARCHAR(50) NOT NULL, task_type INTEGER NOT NULL, task_data VARCHAR NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); `, }, //任务表-count_queue { TableName: "etl_task_queue_failure_log", SQL: ` CREATE TABLE IF NOT EXISTS etl_task_queue_failure_log ( system_id VARCHAR(50) PRIMARY KEY, task_queue_id VARCHAR(50) PRIMARY KEY, task_id VARCHAR(38) NOT NULL, queue_id VARCHAR(38) NOT NULL, sql_id VARCHAR(50) NOT NULL, task_type INTEGER NOT NULL, task_data VARCHAR NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); `, }, // 定时日志Timer { TableName: "etl_timer", SQL: ` CREATE TABLE IF NOT EXISTS etl_timer ( timer_id VARCHAR(50) PRIMARY KEY, timer_name VARCHAR(50) NOT NULL, timer_cron VARCHAR(50) NOT NULL, timer_tag VARCHAR(50) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); `, }, // 定时日志Timer { TableName: "etl_timer_log", SQL: ` CREATE TABLE IF NOT EXISTS etl_timer_log ( system_id VARCHAR(50) PRIMARY KEY, timer_id VARCHAR(50) NOT NULL, timer_name VARCHAR(50) NOT NULL, timer_cron VARCHAR(50) NOT NULL, timer_tag VARCHAR(50) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); `, }, // 添加新表在这里插入新的 TableDDL } }