package functions import ( "github.com/gin-gonic/gin" "git.x2erp.com/qdy/go-base/mycsv" "git.x2erp.com/qdy/go-base/types" "git.x2erp.com/qdy/go-db/factory/database" ) // 统一的错误响应处理 func handleErrorResponseCSV(c *gin.Context, err error) { errorCSV := mycsv.CreateStringToCSV(err.Error()) c.Header("Content-Type", "text/csv; charset=utf-8") c.Header("X-Error", "true") c.Data(400, "text/csv; charset=utf-8", errorCSV) } // 统一的成功响应处理 func handleSuccessResponseCSV(c *gin.Context, csvData []byte) { c.Header("Content-Type", "text/csv; charset=utf-8") c.Data(200, "text/csv; charset=utf-8", csvData) } // 执行查询,返回CSV数据格式。无参数查询 func QueryToCSV(dbFactory *database.DBFactory) func(c *gin.Context, req types.QueryRequest) { return func(c *gin.Context, req types.QueryRequest) { csvData, err := dbFactory.QueryToCSV(req.SQL, req.WriterHeader) if err != nil { handleErrorResponseCSV(c, err) return } handleSuccessResponseCSV(c, csvData) } } // 执行查询,返回CSV数据格式。带参数名称进行查询 func QueryParamNameToCSV(dbFactory *database.DBFactory) func(c *gin.Context, req types.QueryRequest) { return func(c *gin.Context, req types.QueryRequest) { csvData, err := dbFactory.QueryParamsNameToCSV(req.SQL, req.WriterHeader, req.Params) if err != nil { handleErrorResponseCSV(c, err) return } handleSuccessResponseCSV(c, csvData) } } // 执行查询,返回CSV数据格式。带占位参数进行查询 func QueryPositionalToCSV(dbFactory *database.DBFactory) func(c *gin.Context, req types.QueryRequest) { return func(c *gin.Context, req types.QueryRequest) { csvData, err := dbFactory.QueryPositionalToCSV(req.SQL, req.WriterHeader, req.PositionalParams) if err != nil { handleErrorResponseCSV(c, err) return } handleSuccessResponseCSV(c, csvData) } }