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" ) // 创建带 db 的 handler func QueryToCSV(dbFactory *factory.DBFactory) func(c *gin.Context, req types.QueryRequest) { return func(c *gin.Context, req types.QueryRequest) { csvData, err := dbFactory.QueryToCSV(req.SQL) if err != nil { // 错误时也返回CSV格式,而不是JSON errorCSV := mycsv.CreateStringToCSV(err.Error()) c.Header("Content-Type", "text/csv; charset=utf-8") c.Header("X-Error", "true") // 可选:通过header标记这是错误响应 c.Data(400, "text/csv; charset=utf-8", errorCSV) return } // 成功返回CSV数据 c.Header("Content-Type", "text/csv; charset=utf-8") c.Data(200, "text/csv; charset=utf-8", csvData) } }