feat: add route render

This commit is contained in:
Rogee
2024-12-20 20:47:19 +08:00
parent a6e6443120
commit 8ff0f683c1
11 changed files with 740 additions and 385 deletions

View File

@@ -2,9 +2,9 @@ package f
import (
"github.com/gofiber/fiber/v3"
"github.com/pkg/errors"
)
func Path[T fiber.GenericType](key string) func(fiber.Ctx) (T, error) {
return func(ctx fiber.Ctx) (T, error) {
v := fiber.Params[T](ctx, key)
@@ -12,58 +12,48 @@ func Path[T fiber.GenericType](key string) func(fiber.Ctx) (T, error) {
}
}
func URI[T any]() func(fiber.Ctx) (*T, error) {
func URI[T any](name string) func(fiber.Ctx) (*T, error) {
return func(ctx fiber.Ctx) (*T, error) {
p := new(T)
if err := ctx.Bind().URI(p); err != nil {
return nil, err
return nil, errors.Wrapf(err, "uri: %s", name)
}
return p, nil
}
}
func Cookie[T any]() func(fiber.Ctx) (*T, error) {
return func(ctx fiber.Ctx) (*T, error) {
p := new(T)
if err := ctx.Bind().Cookie(p); err != nil {
return nil, err
}
return p, nil
}
}
func Body[T any]() func(fiber.Ctx) (*T, error) {
func Body[T any](name string) func(fiber.Ctx) (*T, error) {
return func(ctx fiber.Ctx) (*T, error) {
p := new(T)
if err := ctx.Bind().Body(p); err != nil {
return nil, err
return nil, errors.Wrapf(err, "body: %s", name)
}
return p, nil
}
}
func Query[T any]() func(fiber.Ctx) (*T, error) {
func Query[T any](name string) func(fiber.Ctx) (*T, error) {
return func(ctx fiber.Ctx) (*T, error) {
p := new(T)
if err := ctx.Bind().Query(p); err != nil {
return nil, err
return nil, errors.Wrapf(err, "query: %s", name)
}
return p, nil
}
}
func Header[T any]() func(fiber.Ctx) (*T, error) {
func Header[T any](name string) func(fiber.Ctx) (*T, error) {
return func(ctx fiber.Ctx) (*T, error) {
p := new(T)
err := ctx.Bind().Header(p)
if err != nil {
return nil, err
return nil, errors.Wrapf(err, "header: %s", name)
}
return p, nil
}
}