package system import ( "kra/pkg/response" "github.com/gin-gonic/gin" ) // JSONMap 通用JSON Map类型 type JSONMap map[string]interface{} type AutoCodeApi struct{} // GetDB 获取当前所有数据库 // @Summary 获取当前所有数据库 // @Tags AutoCode // @Security ApiKeyAuth // @Accept json // @Produce json // @Param businessDB query string false "业务数据库别名" // @Success 200 {object} response.Response{data=map[string]interface{},msg=string} "获取当前所有数据库" // @Router /autoCode/getDB [get] func (api *AutoCodeApi) GetDB(c *gin.Context) { businessDB := c.Query("businessDB") // 获取数据库列表 dbs, err := autoCodeUsecase.GetDB(c.Request.Context(), businessDB) if err != nil { response.FailWithMessage("获取失败", c) return } // 获取配置的数据库列表 dbList := autoCodeUsecase.GetDBList() response.OkWithDetailed(gin.H{"dbs": dbs, "dbList": dbList}, "获取成功", c) } // GetTables 获取当前数据库所有表 // @Summary 获取当前数据库所有表 // @Tags AutoCode // @Security ApiKeyAuth // @Accept json // @Produce json // @Param dbName query string false "数据库名" // @Param businessDB query string false "业务数据库别名" // @Success 200 {object} response.Response{data=map[string]interface{},msg=string} "获取当前数据库所有表" // @Router /autoCode/getTables [get] func (api *AutoCodeApi) GetTables(c *gin.Context) { dbName := c.Query("dbName") businessDB := c.Query("businessDB") // 如果dbName为空,使用默认数据库名 if dbName == "" { dbName = autoCodeUsecase.GetActiveDBName(businessDB) } tables, err := autoCodeUsecase.GetTables(c.Request.Context(), businessDB, dbName) if err != nil { response.FailWithMessage("查询table失败", c) return } response.OkWithDetailed(gin.H{"tables": tables}, "获取成功", c) } // GetColumn 获取当前表所有字段 // @Summary 获取当前表所有字段 // @Tags AutoCode // @Security ApiKeyAuth // @Accept json // @Produce json // @Param dbName query string false "数据库名" // @Param tableName query string true "表名" // @Param businessDB query string false "业务数据库别名" // @Success 200 {object} response.Response{data=map[string]interface{},msg=string} "获取当前表所有字段" // @Router /autoCode/getColumn [get] func (api *AutoCodeApi) GetColumn(c *gin.Context) { businessDB := c.Query("businessDB") dbName := c.Query("dbName") tableName := c.Query("tableName") // 如果dbName为空,使用默认数据库名 if dbName == "" { dbName = autoCodeUsecase.GetActiveDBName(businessDB) } columns, err := autoCodeUsecase.GetColumn(c.Request.Context(), businessDB, tableName, dbName) if err != nil { response.FailWithMessage("获取失败", c) return } response.OkWithDetailed(gin.H{"columns": columns}, "获取成功", c) } // LLMAuto 大模型自动生成代码 // @Summary 大模型自动生成代码 // @Tags AutoCode // @Security ApiKeyAuth // @Accept json // @Produce json // @Param data body JSONMap true "LLM参数" // @Success 200 {object} response.Response{data=interface{}} // @Router /autoCode/llmAuto [post] func (api *AutoCodeApi) LLMAuto(c *gin.Context) { var llm JSONMap if err := c.ShouldBindJSON(&llm); err != nil { response.FailWithMessage(err.Error(), c) return } data, err := autoCodeUsecase.LLMAuto(c.Request.Context(), llm) if err != nil { response.FailWithMessage("大模型生成失败: "+err.Error(), c) return } response.OkWithData(data, c) }