feat: init

This commit is contained in:
Rogee
2024-12-25 17:49:29 +08:00
parent 77e36d5aaf
commit 28735f506f
6 changed files with 219 additions and 164 deletions

View File

@@ -1,31 +1,116 @@
package errorx package errorx
import ( import (
"errors"
"fmt" "fmt"
"net/http" "net/http"
"runtime"
"github.com/go-jet/jet/v2/qrm"
"github.com/gofiber/fiber/v3" "github.com/gofiber/fiber/v3"
"github.com/gofiber/fiber/v3/binder"
"github.com/gofiber/utils/v2"
log "github.com/sirupsen/logrus"
) )
func Middleware(c fiber.Ctx) error {
err := c.Next()
if err != nil {
return Wrap(err).Response(c)
}
return err
}
type Response struct { type Response struct {
StatusCode int `json:"-"` isFormat bool
Code int `json:"code"` err error
Message string `json:"message"` params []any
sql string
file string
StatusCode int `json:"-" xml:"-"`
Code int `json:"code" xml:"code"`
Message string `json:"message" xml:"message"`
} }
func Wrap(err error) Response { func New(code, statusCode int, message string) *Response {
return Response{http.StatusInternalServerError, http.StatusInternalServerError, err.Error()} return &Response{
isFormat: true,
StatusCode: statusCode,
Code: code,
Message: message,
}
}
func (r *Response) Sql(sql string) *Response {
r.sql = sql
return r
}
func (r *Response) Params(params ...any) *Response {
r.params = params
if _, file, line, ok := runtime.Caller(1); ok {
r.file = fmt.Sprintf("%s:%d", file, line)
}
return r
}
func Wrap(err error) *Response {
if e, ok := err.(*Response); ok {
return e
}
return &Response{err: err}
}
func (r *Response) format() {
r.isFormat = true
if errors.Is(r.err, qrm.ErrNoRows) {
r.Code = RecordNotExists.Code
r.Message = RecordNotExists.Message
r.StatusCode = RecordNotExists.StatusCode
return
}
if e, ok := r.err.(*fiber.Error); ok {
r.Code = e.Code
r.Message = e.Message
r.StatusCode = e.Code
return
}
}
func (r *Response) Error() string {
if !r.isFormat {
r.format()
} }
func (r Response) Error() string {
return fmt.Sprintf("[%d] %s", r.Code, r.Message) return fmt.Sprintf("[%d] %s", r.Code, r.Message)
} }
func (r Response) Response(ctx fiber.Ctx) error { func (r *Response) Response(ctx fiber.Ctx) error {
return ctx.Status(r.StatusCode).JSON(r) if !r.isFormat {
r.format()
}
contentType := utils.ToLower(utils.UnsafeString(ctx.Context().Request.Header.ContentType()))
contentType = binder.FilterFlags(utils.ParseVendorSpecificContentType(contentType))
log.WithError(r.err).WithField("file", r.file).WithField("params", r.params).Errorf("response error: %+v", r)
// Parse body accordingly
switch contentType {
case fiber.MIMETextXML, fiber.MIMEApplicationXML:
return ctx.Status(r.StatusCode).XML(r)
case fiber.MIMETextHTML, fiber.MIMETextPlain:
return ctx.Status(r.StatusCode).SendString(r.Message)
default:
return ctx.Status(r.StatusCode).JSON(r.Message)
}
} }
var ( var (
RequestParseError = Response{http.StatusBadRequest, http.StatusBadRequest, "请求解析错误"} RecordNotExists = New(http.StatusNotFound, http.StatusNotFound, "记录不存在")
InternalError = Response{http.StatusInternalServerError, http.StatusInternalServerError, "内部错误"} BadRequest = New(http.StatusBadRequest, http.StatusBadRequest, "请求错误")
Unauthorized = New(http.StatusUnauthorized, http.StatusUnauthorized, "未授权")
InternalErr = New(http.StatusInternalServerError, http.StatusInternalServerError, "内部错误")
) )

View File

@@ -1,31 +0,0 @@
package middlewares
import (
"{{.ModuleName}}/app/errorx"
"github.com/gofiber/fiber/v3"
log "github.com/sirupsen/logrus"
)
func (f *Middlewares) ProcessResponse(c fiber.Ctx) error {
err := c.Next()
if err != nil {
log.WithError(err).Error("process response error")
if e, ok := err.(errorx.Response); ok {
return e.Response(c)
}
if e, ok := err.(*fiber.Error); ok {
return errorx.Response{
StatusCode: e.Code,
Code: e.Code,
Message: e.Message,
}.Response(c)
}
return errorx.Wrap(err).Response(c)
}
return err
}

View File

@@ -51,16 +51,16 @@ func Func3[P1 any, P2 any, P3 any](
return func(ctx fiber.Ctx) error { return func(ctx fiber.Ctx) error {
p1, err := pf1(ctx) p1, err := pf1(ctx)
if err != nil { if err != nil {
return nil return err
} }
p2, err := pf2(ctx) p2, err := pf2(ctx)
if err != nil { if err != nil {
return nil return err
} }
p3, err := pf3(ctx) p3, err := pf3(ctx)
if err != nil { if err != nil {
return nil return err
} }
return f(ctx, p1, p2, p3) return f(ctx, p1, p2, p3)
} }
@@ -76,22 +76,22 @@ func Func4[P1 any, P2 any, P3 any, P4 any](
return func(ctx fiber.Ctx) error { return func(ctx fiber.Ctx) error {
p1, err := pf1(ctx) p1, err := pf1(ctx)
if err != nil { if err != nil {
return nil return err
} }
p2, err := pf2(ctx) p2, err := pf2(ctx)
if err != nil { if err != nil {
return nil return err
} }
p3, err := pf3(ctx) p3, err := pf3(ctx)
if err != nil { if err != nil {
return nil return err
} }
p4, err := pf4(ctx) p4, err := pf4(ctx)
if err != nil { if err != nil {
return nil return err
} }
return f(ctx, p1, p2, p3, p4) return f(ctx, p1, p2, p3, p4)
@@ -109,23 +109,23 @@ func Func5[P1 any, P2 any, P3 any, P4 any, P5 any](
return func(ctx fiber.Ctx) error { return func(ctx fiber.Ctx) error {
p1, err := pf1(ctx) p1, err := pf1(ctx)
if err != nil { if err != nil {
return nil return err
} }
p2, err := pf2(ctx) p2, err := pf2(ctx)
if err != nil { if err != nil {
return nil return err
} }
p3, err := pf3(ctx) p3, err := pf3(ctx)
if err != nil { if err != nil {
return nil return err
} }
p4, err := pf4(ctx) p4, err := pf4(ctx)
if err != nil { if err != nil {
return nil return err
} }
p5, err := pf5(ctx) p5, err := pf5(ctx)
if err != nil { if err != nil {
return nil return err
} }
return f(ctx, p1, p2, p3, p4, p5) return f(ctx, p1, p2, p3, p4, p5)
} }
@@ -143,27 +143,27 @@ func Func6[P1 any, P2 any, P3 any, P4 any, P5 any, P6 any](
return func(ctx fiber.Ctx) error { return func(ctx fiber.Ctx) error {
p1, err := pf1(ctx) p1, err := pf1(ctx)
if err != nil { if err != nil {
return nil return err
} }
p2, err := pf2(ctx) p2, err := pf2(ctx)
if err != nil { if err != nil {
return nil return err
} }
p3, err := pf3(ctx) p3, err := pf3(ctx)
if err != nil { if err != nil {
return nil return err
} }
p4, err := pf4(ctx) p4, err := pf4(ctx)
if err != nil { if err != nil {
return nil return err
} }
p5, err := pf5(ctx) p5, err := pf5(ctx)
if err != nil { if err != nil {
return nil return err
} }
p6, err := pf6(ctx) p6, err := pf6(ctx)
if err != nil { if err != nil {
return nil return err
} }
return f(ctx, p1, p2, p3, p4, p5, p6) return f(ctx, p1, p2, p3, p4, p5, p6)
} }
@@ -182,31 +182,31 @@ func Func7[P1 any, P2 any, P3 any, P4 any, P5 any, P6 any, P7 any](
return func(ctx fiber.Ctx) error { return func(ctx fiber.Ctx) error {
p1, err := pf1(ctx) p1, err := pf1(ctx)
if err != nil { if err != nil {
return nil return err
} }
p2, err := pf2(ctx) p2, err := pf2(ctx)
if err != nil { if err != nil {
return nil return err
} }
p3, err := pf3(ctx) p3, err := pf3(ctx)
if err != nil { if err != nil {
return nil return err
} }
p4, err := pf4(ctx) p4, err := pf4(ctx)
if err != nil { if err != nil {
return nil return err
} }
p5, err := pf5(ctx) p5, err := pf5(ctx)
if err != nil { if err != nil {
return nil return err
} }
p6, err := pf6(ctx) p6, err := pf6(ctx)
if err != nil { if err != nil {
return nil return err
} }
p7, err := pf7(ctx) p7, err := pf7(ctx)
if err != nil { if err != nil {
return nil return err
} }
return f(ctx, p1, p2, p3, p4, p5, p6, p7) return f(ctx, p1, p2, p3, p4, p5, p6, p7)
} }
@@ -226,35 +226,35 @@ func Func8[P1 any, P2 any, P3 any, P4 any, P5 any, P6 any, P7 any, P8 any](
return func(ctx fiber.Ctx) error { return func(ctx fiber.Ctx) error {
p1, err := pf1(ctx) p1, err := pf1(ctx)
if err != nil { if err != nil {
return nil return err
} }
p2, err := pf2(ctx) p2, err := pf2(ctx)
if err != nil { if err != nil {
return nil return err
} }
p3, err := pf3(ctx) p3, err := pf3(ctx)
if err != nil { if err != nil {
return nil return err
} }
p4, err := pf4(ctx) p4, err := pf4(ctx)
if err != nil { if err != nil {
return nil return err
} }
p5, err := pf5(ctx) p5, err := pf5(ctx)
if err != nil { if err != nil {
return nil return err
} }
p6, err := pf6(ctx) p6, err := pf6(ctx)
if err != nil { if err != nil {
return nil return err
} }
p7, err := pf7(ctx) p7, err := pf7(ctx)
if err != nil { if err != nil {
return nil return err
} }
p8, err := pf8(ctx) p8, err := pf8(ctx)
if err != nil { if err != nil {
return nil return err
} }
return f(ctx, p1, p2, p3, p4, p5, p6, p7, p8) return f(ctx, p1, p2, p3, p4, p5, p6, p7, p8)
} }
@@ -275,39 +275,39 @@ func Func9[P1 any, P2 any, P3 any, P4 any, P5 any, P6 any, P7 any, P8 any, P9 an
return func(ctx fiber.Ctx) error { return func(ctx fiber.Ctx) error {
p1, err := pf1(ctx) p1, err := pf1(ctx)
if err != nil { if err != nil {
return nil return err
} }
p2, err := pf2(ctx) p2, err := pf2(ctx)
if err != nil { if err != nil {
return nil return err
} }
p3, err := pf3(ctx) p3, err := pf3(ctx)
if err != nil { if err != nil {
return nil return err
} }
p4, err := pf4(ctx) p4, err := pf4(ctx)
if err != nil { if err != nil {
return nil return err
} }
p5, err := pf5(ctx) p5, err := pf5(ctx)
if err != nil { if err != nil {
return nil return err
} }
p6, err := pf6(ctx) p6, err := pf6(ctx)
if err != nil { if err != nil {
return nil return err
} }
p7, err := pf7(ctx) p7, err := pf7(ctx)
if err != nil { if err != nil {
return nil return err
} }
p8, err := pf8(ctx) p8, err := pf8(ctx)
if err != nil { if err != nil {
return nil return err
} }
p9, err := pf9(ctx) p9, err := pf9(ctx)
if err != nil { if err != nil {
return nil return err
} }
return f(ctx, p1, p2, p3, p4, p5, p6, p7, p8, p9) return f(ctx, p1, p2, p3, p4, p5, p6, p7, p8, p9)
} }
@@ -329,45 +329,44 @@ func Func10[P1 any, P2 any, P3 any, P4 any, P5 any, P6 any, P7 any, P8 any, P9 a
return func(ctx fiber.Ctx) error { return func(ctx fiber.Ctx) error {
p1, err := pf1(ctx) p1, err := pf1(ctx)
if err != nil { if err != nil {
return nil return err
} }
p2, err := pf2(ctx) p2, err := pf2(ctx)
if err != nil { if err != nil {
return nil return err
} }
p3, err := pf3(ctx) p3, err := pf3(ctx)
if err != nil { if err != nil {
return nil return err
} }
p4, err := pf4(ctx) p4, err := pf4(ctx)
if err != nil { if err != nil {
return nil return err
} }
p5, err := pf5(ctx) p5, err := pf5(ctx)
if err != nil { if err != nil {
return nil return err
} }
p6, err := pf6(ctx) p6, err := pf6(ctx)
if err != nil { if err != nil {
return nil return err
} }
p7, err := pf7(ctx) p7, err := pf7(ctx)
if err != nil { if err != nil {
return nil return err
} }
p8, err := pf8(ctx) p8, err := pf8(ctx)
if err != nil { if err != nil {
return nil return err
} }
p9, err := pf9(ctx) p9, err := pf9(ctx)
if err != nil { if err != nil {
return nil return err
} }
p10, err := pf10(ctx) p10, err := pf10(ctx)
if err != nil { if err != nil {
return nil return err
} }
return f(ctx, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10) return f(ctx, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10)
} }
} }

View File

@@ -10,7 +10,7 @@ func DataFunc[T any](
return func(ctx fiber.Ctx) error { return func(ctx fiber.Ctx) error {
data, err := f(ctx) data, err := f(ctx)
if err != nil { if err != nil {
return nil return err
} }
return ctx.JSON(data) return ctx.JSON(data)
} }
@@ -23,12 +23,12 @@ func DataFunc1[T any, P1 any](
return func(ctx fiber.Ctx) error { return func(ctx fiber.Ctx) error {
p, err := pf1(ctx) p, err := pf1(ctx)
if err != nil { if err != nil {
return nil return err
} }
data, err := f(ctx, p) data, err := f(ctx, p)
if err != nil { if err != nil {
return nil return err
} }
return ctx.JSON(data) return ctx.JSON(data)
} }
@@ -42,15 +42,15 @@ func DataFunc2[T any, P1 any, P2 any](
return func(ctx fiber.Ctx) error { return func(ctx fiber.Ctx) error {
p1, err := pf1(ctx) p1, err := pf1(ctx)
if err != nil { if err != nil {
return nil return err
} }
p2, err := pf2(ctx) p2, err := pf2(ctx)
if err != nil { if err != nil {
return nil return err
} }
data, err := f(ctx, p1, p2) data, err := f(ctx, p1, p2)
if err != nil { if err != nil {
return nil return err
} }
return ctx.JSON(data) return ctx.JSON(data)
} }
@@ -65,19 +65,19 @@ func DataFunc3[T any, P1 any, P2 any, P3 any](
return func(ctx fiber.Ctx) error { return func(ctx fiber.Ctx) error {
p1, err := pf1(ctx) p1, err := pf1(ctx)
if err != nil { if err != nil {
return nil return err
} }
p2, err := pf2(ctx) p2, err := pf2(ctx)
if err != nil { if err != nil {
return nil return err
} }
p3, err := pf3(ctx) p3, err := pf3(ctx)
if err != nil { if err != nil {
return nil return err
} }
data, err := f(ctx, p1, p2, p3) data, err := f(ctx, p1, p2, p3)
if err != nil { if err != nil {
return nil return err
} }
return ctx.JSON(data) return ctx.JSON(data)
} }
@@ -93,23 +93,23 @@ func DataFunc4[T any, P1 any, P2 any, P3 any, P4 any](
return func(ctx fiber.Ctx) error { return func(ctx fiber.Ctx) error {
p1, err := pf1(ctx) p1, err := pf1(ctx)
if err != nil { if err != nil {
return nil return err
} }
p2, err := pf2(ctx) p2, err := pf2(ctx)
if err != nil { if err != nil {
return nil return err
} }
p3, err := pf3(ctx) p3, err := pf3(ctx)
if err != nil { if err != nil {
return nil return err
} }
p4, err := pf4(ctx) p4, err := pf4(ctx)
if err != nil { if err != nil {
return nil return err
} }
data, err := f(ctx, p1, p2, p3, p4) data, err := f(ctx, p1, p2, p3, p4)
if err != nil { if err != nil {
return nil return err
} }
return ctx.JSON(data) return ctx.JSON(data)
} }
@@ -126,27 +126,27 @@ func DataFunc5[T any, P1 any, P2 any, P3 any, P4 any, P5 any](
return func(ctx fiber.Ctx) error { return func(ctx fiber.Ctx) error {
p1, err := pf1(ctx) p1, err := pf1(ctx)
if err != nil { if err != nil {
return nil return err
} }
p2, err := pf2(ctx) p2, err := pf2(ctx)
if err != nil { if err != nil {
return nil return err
} }
p3, err := pf3(ctx) p3, err := pf3(ctx)
if err != nil { if err != nil {
return nil return err
} }
p4, err := pf4(ctx) p4, err := pf4(ctx)
if err != nil { if err != nil {
return nil return err
} }
p5, err := pf5(ctx) p5, err := pf5(ctx)
if err != nil { if err != nil {
return nil return err
} }
data, err := f(ctx, p1, p2, p3, p4, p5) data, err := f(ctx, p1, p2, p3, p4, p5)
if err != nil { if err != nil {
return nil return err
} }
return ctx.JSON(data) return ctx.JSON(data)
} }
@@ -164,31 +164,31 @@ func DataFunc6[T any, P1 any, P2 any, P3 any, P4 any, P5 any, P6 any](
return func(ctx fiber.Ctx) error { return func(ctx fiber.Ctx) error {
p1, err := pf1(ctx) p1, err := pf1(ctx)
if err != nil { if err != nil {
return nil return err
} }
p2, err := pf2(ctx) p2, err := pf2(ctx)
if err != nil { if err != nil {
return nil return err
} }
p3, err := pf3(ctx) p3, err := pf3(ctx)
if err != nil { if err != nil {
return nil return err
} }
p4, err := pf4(ctx) p4, err := pf4(ctx)
if err != nil { if err != nil {
return nil return err
} }
p5, err := pf5(ctx) p5, err := pf5(ctx)
if err != nil { if err != nil {
return nil return err
} }
p6, err := pf6(ctx) p6, err := pf6(ctx)
if err != nil { if err != nil {
return nil return err
} }
data, err := f(ctx, p1, p2, p3, p4, p5, p6) data, err := f(ctx, p1, p2, p3, p4, p5, p6)
if err != nil { if err != nil {
return nil return err
} }
return ctx.JSON(data) return ctx.JSON(data)
} }
@@ -207,35 +207,35 @@ func DataFunc7[T any, P1 any, P2 any, P3 any, P4 any, P5 any, P6 any, P7 any](
return func(ctx fiber.Ctx) error { return func(ctx fiber.Ctx) error {
p1, err := pf1(ctx) p1, err := pf1(ctx)
if err != nil { if err != nil {
return nil return err
} }
p2, err := pf2(ctx) p2, err := pf2(ctx)
if err != nil { if err != nil {
return nil return err
} }
p3, err := pf3(ctx) p3, err := pf3(ctx)
if err != nil { if err != nil {
return nil return err
} }
p4, err := pf4(ctx) p4, err := pf4(ctx)
if err != nil { if err != nil {
return nil return err
} }
p5, err := pf5(ctx) p5, err := pf5(ctx)
if err != nil { if err != nil {
return nil return err
} }
p6, err := pf6(ctx) p6, err := pf6(ctx)
if err != nil { if err != nil {
return nil return err
} }
p7, err := pf7(ctx) p7, err := pf7(ctx)
if err != nil { if err != nil {
return nil return err
} }
data, err := f(ctx, p1, p2, p3, p4, p5, p6, p7) data, err := f(ctx, p1, p2, p3, p4, p5, p6, p7)
if err != nil { if err != nil {
return nil return err
} }
return ctx.JSON(data) return ctx.JSON(data)
} }
@@ -255,39 +255,39 @@ func DataFunc8[T any, P1 any, P2 any, P3 any, P4 any, P5 any, P6 any, P7 any, P8
return func(ctx fiber.Ctx) error { return func(ctx fiber.Ctx) error {
p1, err := pf1(ctx) p1, err := pf1(ctx)
if err != nil { if err != nil {
return nil return err
} }
p2, err := pf2(ctx) p2, err := pf2(ctx)
if err != nil { if err != nil {
return nil return err
} }
p3, err := pf3(ctx) p3, err := pf3(ctx)
if err != nil { if err != nil {
return nil return err
} }
p4, err := pf4(ctx) p4, err := pf4(ctx)
if err != nil { if err != nil {
return nil return err
} }
p5, err := pf5(ctx) p5, err := pf5(ctx)
if err != nil { if err != nil {
return nil return err
} }
p6, err := pf6(ctx) p6, err := pf6(ctx)
if err != nil { if err != nil {
return nil return err
} }
p7, err := pf7(ctx) p7, err := pf7(ctx)
if err != nil { if err != nil {
return nil return err
} }
p8, err := pf8(ctx) p8, err := pf8(ctx)
if err != nil { if err != nil {
return nil return err
} }
data, err := f(ctx, p1, p2, p3, p4, p5, p6, p7, p8) data, err := f(ctx, p1, p2, p3, p4, p5, p6, p7, p8)
if err != nil { if err != nil {
return nil return err
} }
return ctx.JSON(data) return ctx.JSON(data)
} }
@@ -308,43 +308,43 @@ func DataFunc9[T any, P1 any, P2 any, P3 any, P4 any, P5 any, P6 any, P7 any, P8
return func(ctx fiber.Ctx) error { return func(ctx fiber.Ctx) error {
p1, err := pf1(ctx) p1, err := pf1(ctx)
if err != nil { if err != nil {
return nil return err
} }
p2, err := pf2(ctx) p2, err := pf2(ctx)
if err != nil { if err != nil {
return nil return err
} }
p3, err := pf3(ctx) p3, err := pf3(ctx)
if err != nil { if err != nil {
return nil return err
} }
p4, err := pf4(ctx) p4, err := pf4(ctx)
if err != nil { if err != nil {
return nil return err
} }
p5, err := pf5(ctx) p5, err := pf5(ctx)
if err != nil { if err != nil {
return nil return err
} }
p6, err := pf6(ctx) p6, err := pf6(ctx)
if err != nil { if err != nil {
return nil return err
} }
p7, err := pf7(ctx) p7, err := pf7(ctx)
if err != nil { if err != nil {
return nil return err
} }
p8, err := pf8(ctx) p8, err := pf8(ctx)
if err != nil { if err != nil {
return nil return err
} }
p9, err := pf9(ctx) p9, err := pf9(ctx)
if err != nil { if err != nil {
return nil return err
} }
data, err := f(ctx, p1, p2, p3, p4, p5, p6, p7, p8, p9) data, err := f(ctx, p1, p2, p3, p4, p5, p6, p7, p8, p9)
if err != nil { if err != nil {
return nil return err
} }
return ctx.JSON(data) return ctx.JSON(data)
} }
@@ -366,47 +366,47 @@ func DataFunc10[T any, P1 any, P2 any, P3 any, P4 any, P5 any, P6 any, P7 any, P
return func(ctx fiber.Ctx) error { return func(ctx fiber.Ctx) error {
p1, err := pf1(ctx) p1, err := pf1(ctx)
if err != nil { if err != nil {
return nil return err
} }
p2, err := pf2(ctx) p2, err := pf2(ctx)
if err != nil { if err != nil {
return nil return err
} }
p3, err := pf3(ctx) p3, err := pf3(ctx)
if err != nil { if err != nil {
return nil return err
} }
p4, err := pf4(ctx) p4, err := pf4(ctx)
if err != nil { if err != nil {
return nil return err
} }
p5, err := pf5(ctx) p5, err := pf5(ctx)
if err != nil { if err != nil {
return nil return err
} }
p6, err := pf6(ctx) p6, err := pf6(ctx)
if err != nil { if err != nil {
return nil return err
} }
p7, err := pf7(ctx) p7, err := pf7(ctx)
if err != nil { if err != nil {
return nil return err
} }
p8, err := pf8(ctx) p8, err := pf8(ctx)
if err != nil { if err != nil {
return nil return err
} }
p9, err := pf9(ctx) p9, err := pf9(ctx)
if err != nil { if err != nil {
return nil return err
} }
p10, err := pf10(ctx) p10, err := pf10(ctx)
if err != nil { if err != nil {
return nil return err
} }
data, err := f(ctx, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10) data, err := f(ctx, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10)
if err != nil { if err != nil {
return nil return err
} }
return ctx.JSON(data) return ctx.JSON(data)
} }

View File

@@ -1,6 +1,7 @@
package http package http
import ( import (
"{{.ModuleName}}/app/errorx"
_ "{{.ModuleName}}/docs" _ "{{.ModuleName}}/docs"
"{{.ModuleName}}/pkg/service" "{{.ModuleName}}/pkg/service"
"{{.ModuleName}}/providers/app" "{{.ModuleName}}/providers/app"
@@ -48,18 +49,19 @@ type Http struct {
func Serve(cmd *cobra.Command, args []string) error { func Serve(cmd *cobra.Command, args []string) error {
return container.Container.Invoke(func(http Http) error { return container.Container.Invoke(func(http Http) error {
log.SetFormatter(&log.JSONFormatter{})
if http.App.Mode == app.AppModeDevelopment { if http.App.Mode == app.AppModeDevelopment {
log.SetLevel(log.DebugLevel) log.SetLevel(log.DebugLevel)
http.Service.Engine.Get("/swagger/*", swagger.HandlerDefault) http.Service.Engine.Get("/swagger/*", swagger.HandlerDefault)
} }
http.Service.Engine.Use(errorx.Middleware)
http.Service.Engine.Use(favicon.New(favicon.Config{ http.Service.Engine.Use(favicon.New(favicon.Config{
Data: []byte{}, Data: []byte{},
})) }))
group := http.Service.Engine.Group("/v1") group := http.Service.Engine.Group("")
for _, route := range http.Routes { for _, route := range http.Routes {
route.Register(group) route.Register(group)
} }

View File

@@ -70,7 +70,7 @@ func Provide(opts ...opt.Option) error {
engine.Use(recover.New(recover.Config{ engine.Use(recover.New(recover.Config{
EnableStackTrace: true, EnableStackTrace: true,
StackTraceHandler: func(c fiber.Ctx, e any) { StackTraceHandler: func(c fiber.Ctx, e any) {
log.WithError(e.(error)).Error(fmt.Sprintf("panic: %v\n%s\n", e, debug.Stack())) log.Error(fmt.Sprintf("panic: %v\n%s\n", e, debug.Stack()))
}, },
})) }))