Files
datamarket/internal/handler/common.go
2026-04-01 17:05:08 +08:00

47 lines
982 B
Go

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),
})
}