package handler import ( "net/http" "gitea.starryskymeow.cn/B309/datamarket/internal/service" "github.com/go-chi/render" "github.com/gorilla/schema" ) type Response[T any] struct { Code int `json:"code"` Message string `json:"message"` Data T `json:"data,omitempty"` } type ListResponse[T any] struct { List []T `json:"list"` Total int64 `json:"total"` Limit int32 `json:"limit"` Offset int32 `json:"offset"` } var decoder = schema.NewDecoder() func init() { decoder.IgnoreUnknownKeys(true) } func renderSuccess[T any](w http.ResponseWriter, r *http.Request, status int, message string, data T) { render.Status(r, status) render.JSON(w, r, Response[T]{ Code: 0, Message: message, Data: data, }) } func renderServiceError(w http.ResponseWriter, r *http.Request, err error) { status := service.StatusCode(err) render.Status(r, status) render.JSON(w, r, Response[any]{ Code: status, Message: service.Message(err), }) }