-
Notifications
You must be signed in to change notification settings - Fork 6
/
gen_handlers.go
69 lines (58 loc) · 1.79 KB
/
gen_handlers.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package generator
import (
"path"
"strings"
"github.com/MasterJoyHunan/gengin/pkg"
"github.com/MasterJoyHunan/gengin/prepare"
"github.com/MasterJoyHunan/gengin/tpl"
"golang.org/x/text/cases"
"golang.org/x/text/language"
"github.com/zeromicro/go-zero/tools/goctl/api/spec"
"github.com/zeromicro/go-zero/tools/goctl/util/format"
)
func GenHandlers() error {
for _, group := range prepare.ApiSpec.Service.Groups {
for _, r := range group.Routes {
if err := genHandler(group, r); err != nil {
return err
}
}
}
return nil
}
func genHandler(group spec.Group, route spec.Route) error {
handlerName, err := format.FileNamingFormat(fileNameStyle, route.Handler)
if err != nil {
return err
}
handlerFileName := strings.TrimSuffix(strings.TrimSuffix(handlerName, "handle"), "_") + "_handle.go"
subDir := group.GetAnnotation(groupProperty)
subDir, err = format.FileNamingFormat(dirStyle, subDir)
if err != nil {
return err
}
handlePkg := path.Join("handler", subDir)
logicPkg := path.Join("logic", subDir)
handleBase := path.Base(handlePkg)
logicBase := path.Base(logicPkg)
// 解析请求
p := new(pkg.ParseRequestBody)
parseRequest := p.BuildParseRequestStr(route.RequestType)
return GenFile(
handlerFileName,
tpl.HandlerTemplate,
WithSubDir(handlePkg),
WithData(map[string]any{
"rootPkg": prepare.RootPkg,
"pkgName": handleBase,
"logicPkg": logicPkg,
"logicBase": logicBase,
"comment": parseComment(route),
"handlerName": cases.Title(language.English, cases.NoLower).String(route.Handler),
"requestType": cases.Title(language.English, cases.NoLower).String(route.RequestTypeName()),
"hasResp": len(route.ResponseTypeName()) > 0,
"hasReq": len(route.RequestTypeName()) > 0,
"parseRequest": parseRequest,
}),
)
}