fix: param

This commit is contained in:
Rogee
2025-01-10 16:15:50 +08:00
parent 9d6edc60a9
commit 36e52541dd
3 changed files with 30 additions and 15 deletions

View File

@@ -68,18 +68,16 @@ func Render(path string, routes []RouteDefinition) error {
Func: funcName,
Params: lo.FilterMap(action.Params, func(item ParamDefinition, _ int) (string, bool) {
switch item.Position {
case PositionURI:
return fmt.Sprintf(`URI[%s]("%s")`, item.Type, item.Name), true
case PositionQuery:
return fmt.Sprintf(`Query%s[%s]("%s")`, isScalarType(item.Type), item.Type, item.Name), true
case PositionHeader:
return fmt.Sprintf(`Header[%s]("%s")`, item.Type, item.Name), true
case PositionCookie:
return fmt.Sprintf(`Cookie[%s]("%s")`, item.Type, item.Name), true
return fmt.Sprintf(`Cookie%s[%s]("%s")`, isScalarType(item.Type), item.Type, item.Name), true
case PositionBody:
return fmt.Sprintf(`Body[%s]("%s")`, item.Type, item.Name), true
case PositionPath:
return fmt.Sprintf(`Path[%s]("%s")`, item.Type, item.Name), true
return fmt.Sprintf(`Path%s[%s]("%s")`, isScalarType(item.Type), item.Type, item.Name), true
case PositionLocal:
key := item.Name
if item.Key != "" {

View File

@@ -43,8 +43,6 @@ func positionFromString(v string) Position {
switch v {
case "path":
return PositionPath
case "uri":
return PositionURI
case "query":
return PositionQuery
case "body":
@@ -61,7 +59,6 @@ func positionFromString(v string) Position {
const (
PositionPath Position = "path"
PositionURI Position = "uri"
PositionQuery Position = "query"
PositionBody Position = "body"
PositionHeader Position = "header"

View File

@@ -5,6 +5,13 @@ import (
"github.com/pkg/errors"
)
func Local[T any](key string) func(fiber.Ctx) (T, error) {
return func(ctx fiber.Ctx) (T, error) {
v := fiber.Locals[T](ctx, key)
return v, nil
}
}
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,14 +19,10 @@ func Path[T fiber.GenericType](key string) 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, errors.Wrapf(err, "uri: %s", name)
}
return p, nil
func PathParam[T fiber.GenericType](name string) func(fiber.Ctx) (T, error) {
return func(ctx fiber.Ctx) (T, error) {
v := fiber.Params[T](ctx, name)
return v, nil
}
}
@@ -63,3 +66,20 @@ func Header[T any](name string) func(fiber.Ctx) (*T, error) {
return p, nil
}
}
func Cookie[T any](name string) 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, errors.Wrapf(err, "cookie: %s", name)
}
return p, nil
}
}
func CookieParam(name string) func(fiber.Ctx) (string, error) {
return func(ctx fiber.Ctx) (string, error) {
return ctx.Cookies(name), nil
}
}