feat: 检查路径参数是否包含模型字段并相应地导入字段包

This commit is contained in:
Rogee
2025-09-23 15:40:09 +08:00
parent f8f4c7b76a
commit 13e721532d

View File

@@ -27,6 +27,7 @@ func buildRenderData(opts RenderBuildOpts) (RenderData, error) {
imports := []string{} imports := []string{}
controllers := []string{} controllers := []string{}
hasModelParams := false
for _, route := range opts.Routes { for _, route := range opts.Routes {
imports = append(imports, route.Imports...) imports = append(imports, route.Imports...)
@@ -46,6 +47,14 @@ func buildRenderData(opts RenderBuildOpts) (RenderData, error) {
return tok, true return tok, true
}) })
// Check if any parameter has model field specified
for _, param := range action.Params {
if param.Model != "" && param.Position == PositionPath {
hasModelParams = true
break
}
}
rd.Routes[route.Name] = append(rd.Routes[route.Name], Router{ rd.Routes[route.Name] = append(rd.Routes[route.Name], Router{
Method: strcase.ToCamel(action.Method), Method: strcase.ToCamel(action.Method),
Route: action.Route, Route: action.Route,
@@ -57,6 +66,11 @@ func buildRenderData(opts RenderBuildOpts) (RenderData, error) {
} }
} }
// Add field package import if there are model parameters
if hasModelParams {
imports = append(imports, `"go.ipao.vip/gen/field"`)
}
// de-dup and sort imports/controllers for stable output // de-dup and sort imports/controllers for stable output
rd.Imports = lo.Uniq(imports) rd.Imports = lo.Uniq(imports)
sort.Strings(rd.Imports) sort.Strings(rd.Imports)