feat: init
This commit is contained in:
@@ -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) Error() string {
|
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()
|
||||||
|
}
|
||||||
|
|
||||||
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, "内部错误")
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -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
|
|
||||||
}
|
|
||||||
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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()))
|
||||||
},
|
},
|
||||||
}))
|
}))
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user