Files
atomctl/pkg/ast/route/render.go
Rogee 439456b6ad fix: 恢复 gen route 的 model 参数渲染到 f2a8b98 实现
- 恢复 buildParamToken 函数的直接实现,移除复杂的 builder 模式
- 恢复 buildRenderData 函数的简单实现,提高代码可读性
- 恢复 Render 函数的基础实现,移除过度工程化的验证逻辑
- 修复路由分组路径问题:移除 buildResult 中错误的路径覆盖逻辑
- 当使用 model() 绑定时生成完整的数据库查询函数代码

此提交将 gen route 功能恢复到 commit f2a8b9876e
的实现方式,确保 model 参数渲染符合原始设计。

修复问题:
- 修复路由生成时 "open /v1/medias/routes.gen.go: no such file or directory" 错误
- 确保 model 参数正确生成完整的数据库查询代码而非简化接口
2025-09-22 19:01:40 +08:00

54 lines
936 B
Go

package route
import (
_ "embed"
"os"
"path/filepath"
"go.ipao.vip/atomctl/v2/pkg/utils/gomod"
)
//go:embed router.go.tpl
var routeTpl string
type RenderData struct {
PackageName string
ProjectPackage string
Imports []string
Controllers []string
Routes map[string][]Router
RouteGroups []string
}
type Router struct {
Method string
Route string
Controller string
Action string
Func string
Params []string
}
func Render(path string, routes []RouteDefinition) error {
routePath := filepath.Join(path, "routes.gen.go")
data, err := buildRenderData(RenderBuildOpts{
PackageName: filepath.Base(path),
ProjectPackage: gomod.GetModuleName(),
Routes: routes,
})
if err != nil {
return err
}
out, err := renderTemplate(data)
if err != nil {
return err
}
if err := os.WriteFile(routePath, out, 0o644); err != nil {
return err
}
return nil
}