fix: bind issues

This commit is contained in:
Rogee
2025-01-10 15:56:31 +08:00
parent be276b89ad
commit e66049da6c
3 changed files with 15 additions and 3 deletions

View File

@@ -80,6 +80,12 @@ func Render(path string, routes []RouteDefinition) error {
return fmt.Sprintf(`Body[%s]("%s")`, item.Type, item.Name), true
case PositionPath:
return fmt.Sprintf(`Path[%s]("%s")`, item.Type, item.Name), true
case PositionLocal:
key := item.Name
if item.Key != "" {
key = item.Key
}
return fmt.Sprintf(`Local[%s]("%s")`, item.Type, key), true
}
return "", false
}),

View File

@@ -53,6 +53,8 @@ func positionFromString(v string) Position {
return PositionHeader
case "cookie":
return PositionCookie
case "local":
return PositionLocal
}
panic("invalid position: " + v)
}
@@ -64,6 +66,7 @@ const (
PositionBody Position = "body"
PositionHeader Position = "header"
PositionCookie Position = "cookie"
PositionLocal Position = "local"
)
func ParseFile(file string) []RouteDefinition {
@@ -175,11 +178,14 @@ func ParseFile(file string) []RouteDefinition {
usedImports[recvType] = append(usedImports[recvType], imports[pkgName[0]])
}
typ = strings.TrimPrefix(typ, "*")
for _, name := range param.Names {
for i, bindParam := range bindParams {
if bindParam.Name == name.Name {
if bindParams[i].Position != PositionLocal {
typ = strings.TrimPrefix(typ, "*")
}
bindParams[i].Type = typ
break
}