暂无描述
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

query_csv.go 850B

123456789101112131415161718192021222324252627282930
  1. package routes
  2. import (
  3. "database/sql"
  4. "github.com/gin-gonic/gin"
  5. "git.x2erp.com/qdy/go-base/mycsv"
  6. "git.x2erp.com/qdy/go-base/types"
  7. "git.x2erp.com/qdy/go-db/factory"
  8. )
  9. // 创建带 db 的 handler
  10. func QueryHandlerCSV(db *sql.DB) func(c *gin.Context, req types.QueryRequest) {
  11. return func(c *gin.Context, req types.QueryRequest) {
  12. csvData, err := factory.QueryToCSV(db, req.SQL)
  13. if err != nil {
  14. // 错误时也返回CSV格式,而不是JSON
  15. errorCSV := mycsv.CreateStringToCSV(err.Error())
  16. c.Header("Content-Type", "text/csv; charset=utf-8")
  17. c.Header("X-Error", "true") // 可选:通过header标记这是错误响应
  18. c.Data(400, "text/csv; charset=utf-8", errorCSV)
  19. return
  20. }
  21. // 成功返回CSV数据
  22. c.Header("Content-Type", "text/csv; charset=utf-8")
  23. c.Data(200, "text/csv; charset=utf-8", csvData)
  24. }
  25. }