Skip to content

Commit 4e5615e

Browse files
author
maolin.chen
committed
api、model、proto
1 parent 6bd80f6 commit 4e5615e

11 files changed

Lines changed: 127 additions & 64 deletions

File tree

core/api.go

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -275,25 +275,41 @@ func getRealNameByStyle(name, style string) string {
275275

276276
func (s *ApiSchema) genCommon(template *template.Template) error {
277277
buf := new(bytes.Buffer)
278+
fileP := fmt.Sprintf("%s/desc/%s", s.OutPath, "types")
278279

279-
err := template.ExecuteTemplate(buf, strings.TrimLeft(apiCommon, "/"), *s)
280-
if err != nil {
281-
return err
280+
exists, err := filex.PathExists(fileP + "/common.api")
281+
if err != nil || !exists {
282+
err = template.ExecuteTemplate(buf, strings.TrimLeft(apiCommon, "/"), *s)
283+
if err != nil {
284+
return err
285+
}
286+
return CreateAndWriteFile(fileP, "common.api", buf.String())
282287
}
283288

284-
fileP := fmt.Sprintf("%s/desc/%s", s.OutPath, "types")
285-
return CreateAndWriteFile(fileP, "common.api", buf.String())
289+
return nil
286290
}
287291

288292
func (s *ApiSchema) genApi(template *template.Template) error {
289293
buf := new(bytes.Buffer)
294+
path := s.OutPath + "/desc/" + s.ServiceName + ".api"
295+
exists, err := filex.PathExists(path)
296+
if err != nil || !exists {
297+
err = template.ExecuteTemplate(buf, strings.TrimLeft(apiApi, "/"), *s)
298+
if err != nil {
299+
return err
300+
}
301+
return CreateAndWriteFile(s.OutPath+"/desc", s.ServiceName+".api", buf.String())
302+
}
290303

291-
err := template.ExecuteTemplate(buf, strings.TrimLeft(apiApi, "/"), *s)
304+
importTemplate := `
305+
import (
306+
{{range .Dataset.TableSet}} "types/{{toLower .CamelName}}.api"
307+
{{end}})`
308+
err = PareTextTemplate(importTemplate, *s, buf)
292309
if err != nil {
293310
return err
294311
}
295-
296-
return CreateAndWriteFile(s.OutPath+"/desc", s.ServiceName+".api", buf.String())
312+
return filex.AppendToFile(path, buf.Bytes())
297313
}
298314

299315
func (s *ApiSchema) genTypes(template *template.Template) error {

core/core.go

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -383,9 +383,12 @@ func inSlice(slice []string, dest string) bool {
383383
return false
384384
}
385385

386+
func getTemplateFunMap() template.FuncMap {
387+
return template.FuncMap{"add": add, "toCamelWithStartLower": toCamelWithStartLower, "toLower": toLower, "isIgnore": isIgnore}
388+
}
389+
386390
func PareTemplate(fileName string, filePath string, data any, buffer *bytes.Buffer) error {
387-
funcMap := template.FuncMap{"add": add, "toCamelWithStartLower": toCamelWithStartLower, "toLower": toLower, "isIgnore": isIgnore}
388-
parseFiles, err := template.New(strings.TrimLeft(fileName, "/")).Funcs(funcMap).ParseFiles(filePath)
391+
parseFiles, err := template.New(strings.TrimLeft(fileName, "/")).Funcs(getTemplateFunMap()).ParseFiles(filePath)
389392
if err != nil {
390393
return err
391394
}
@@ -394,13 +397,25 @@ func PareTemplate(fileName string, filePath string, data any, buffer *bytes.Buff
394397
}
395398

396399
func WithTemplate(filePaths ...string) *template.Template {
397-
funcMap := template.FuncMap{"add": add, "toCamelWithStartLower": toCamelWithStartLower, "toLower": toLower, "isIgnore": isIgnore}
398400
mt := template.Must(
399-
template.New("").Funcs(funcMap).ParseFiles(filePaths...),
401+
template.New("").Funcs(getTemplateFunMap()).ParseFiles(filePaths...),
400402
)
401403
return mt
402404
}
403405

406+
func PareTextTemplate(textTpl string, data any, buffer *bytes.Buffer) error {
407+
t := template.New("temp").Funcs(getTemplateFunMap())
408+
parse, err := t.Parse(textTpl)
409+
if err != nil {
410+
return err
411+
}
412+
err = parse.Execute(buffer, data)
413+
if err != nil {
414+
return err
415+
}
416+
return nil
417+
}
418+
404419
func CreateAndWriteFile(fileP, fileN, context string) error {
405420
err := os.MkdirAll(fileP, 0777)
406421
if err != nil {

core/model.go

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -108,11 +108,6 @@ func (m *ModelSchema) genTypes(template *template.Template) error {
108108
buf := new(bytes.Buffer)
109109
path := m.OutPath + "/typs.go"
110110

111-
err := template.ExecuteTemplate(buf, strings.TrimLeft(modelTyps, "/"), *m)
112-
if err != nil {
113-
return err
114-
}
115-
116111
exists, err := filex.PathExists(path)
117112
if err != nil || !exists {
118113
common, err := os.ReadFile(m.TemplateFilePath + modelComTyps)
@@ -121,7 +116,7 @@ func (m *ModelSchema) genTypes(template *template.Template) error {
121116
}
122117
return CreateAndWriteFile(m.OutPath, "typs.go", string(append(common, buf.Bytes()...)))
123118
}
124-
return filex.AppendToFile(path, buf.Bytes())
119+
return nil
125120
}
126121

127122
func (m *ModelSchema) genModel(template *template.Template) error {
@@ -172,7 +167,8 @@ func (m *ModelSchema) genModel(template *template.Template) error {
172167
return err
173168
}
174169

175-
fileName := t.StyleName + ".go"
170+
fileName := getRealNameByStyle(t.CamelName+"Model.go", m.GoZeroStyle)
171+
176172
err = CreateAndWriteFile(m.OutPath, fileName, buf.String())
177173
if err != nil {
178174
return err

core/proto.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ func (s *ProtoSchema) Generate() error {
8888

8989
if s.Switch == switch_file_cmd {
9090
protoPath := fmt.Sprintf("%s/%s.proto", s.OutPath, s.ServiceName)
91-
rpcCmd := fmt.Sprintf("rpc protoc %s --go_out=%s/pb --go-grpc_out=%s/pb --zrpc_out=%s -m=true --style=%s --home=C:\\Users\\maolin.chen\\.goctl\\1.5.0", protoPath, s.OutPath, s.OutPath, s.OutPath, s.GoZeroStyle)
91+
rpcCmd := fmt.Sprintf("rpc protoc %s --go_out=%s/pb --go-grpc_out=%s/pb --zrpc_out=%s -m=true --style=%s", protoPath, s.OutPath, s.OutPath, s.OutPath, s.GoZeroStyle)
9292
args := strings.Split(rpcCmd, " ")
9393
cmd := exec.Command("goctl", args...)
9494
out := bytes.Buffer{}

template/api_api.tpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{{ $prefix := .Prefix }} {{ $serviceName := .ServiceName }}
22
syntax = "{{.Syntax}}"
33

4-
info(
4+
info (
55
title: "{{$serviceName}}"
66
desc: "api入口文件"
77
author: "{{.Author}}"

template/api_common.tpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
syntax = "{{.Syntax}}"
33

4-
info(
4+
info (
55
title: "view"
66
desc: "抽取类型,方便在其他api使用"
77
author: "{{.Author}}"

template/api_page.tpl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,13 @@ func (l *Page{{.CamelName}}Logic) Page{{.CamelName}}(req *types.Search{{.CamelNa
1212
var cond model.{{.CamelName}}Query
1313
_ = copier.Copiers(&cond, req)
1414

15-
list, err := l.svcCtx.{{.CamelName}}Model.FindListByPage(l.ctx, &cond)
15+
total, list, err := l.svcCtx.{{.CamelName}}Model.FindByPage(l.ctx, &cond)
1616
if err != nil {
1717
return nil, errors.Wrapf(errors.New("operate fail"), "{{.CamelName}}Page req: %v, error: %v", req, err)
1818
}
1919

2020
resp = &types.Search{{.CamelName}}Resp{}
21+
resp.Total = total
2122
_ = copier.Copiers(&resp.List, list)
2223

2324
return resp, nil

template/api_types.tpl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{{ $prefix := .Prefix }} {{ $serviceName := .ServiceName }}
22
syntax = "{{.Syntax}}"
33

4-
info(
4+
info (
55
title: "{{.CamelName}}"
66
desc: "{{.Comment}}"
77
author: "{{.Author}}"
@@ -14,7 +14,7 @@ import (
1414
)
1515

1616
//-----------------------{{.CamelName}}的接口-----------------------
17-
@server(
17+
@server (
1818
prefix: {{$prefix}}/{{.CamelName}}
1919
group: {{toLower .CamelName}}
2020
)

template/model_model.tpl

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,12 @@ type (
2222
{{range .Fields}} {{.CamelName}} {{.DataType}} `gorm:"{{.Name}} {{- if .IsPrimary}};primary_key{{end}}"` //{{.Comment}}
2323
{{end}}}
2424

25+
// {{.CamelName}} query cond
26+
{{.CamelName}}Query struct {
27+
SearchBase
28+
{{.CamelName}}
29+
}
30+
2531
{{.CamelName}}Model interface {
2632
// Trans Transaction
2733
Trans(ctx context.Context, fn func(ctx context.Context, db *gorm.DB) (err error)) (err error)
@@ -58,9 +64,13 @@ func New{{.CamelName}}Model(db *gorm.DB {{- if .IsCache}}, c cache.CacheConf{{en
5864
}
5965
}
6066

67+
func (m *{{.CamelName}}) TableName() string {
68+
return "`{{.Name}}`"
69+
}
70+
6171
func (m *default{{.CamelName}}Model) conn(ctx context.Context, db ...*gorm.DB) *gorm.DB {
6272
if len(db) == 0 {
63-
return m.db.Table(m.table).Session(&gorm.Session{Context: ctx})
73+
return m.db.Model(&{{.CamelName}}{}).Session(&gorm.Session{Context: ctx})
6474
}
6575
return db[0]
6676
}
@@ -89,7 +99,7 @@ func (m *default{{.CamelName}}Model) Update(ctx context.Context, data *{{.CamelN
8999
cacheKey := fmt.Sprintf("%s{{.PrimaryFmt}}", cache{{.CamelName}}PrimaryPrefix, {{.PrimaryFmtV}})
90100
{{end -}}
91101
return m.Exec(ctx, func() error {
92-
return m.conn(ctx, db...).Updates(data).Error
102+
return m.conn(ctx, db...).Model(&data).Updates(data).Error
93103
} {{- if .IsCache}}, cacheKey{{end}})
94104
}
95105

@@ -112,7 +122,7 @@ func (m *default{{.CamelName}}Model) ForceDelete(ctx context.Context, {{.Primary
112122
}
113123

114124
func (m *default{{.CamelName}}Model) Count(ctx context.Context, cond *{{.CamelName}}Query) (total int64, err error) {
115-
err = m.conn(ctx, nil).Scopes(
125+
err = m.conn(ctx).Scopes(
116126
searchPlusScope(cond.SearchPlus, m.table),
117127
).Where(cond.{{.CamelName}}).Count(&total).Error
118128
return total, err
@@ -144,11 +154,7 @@ func (m *default{{.CamelName}}Model) FindByPage(ctx context.Context, cond *{{.Ca
144154
searchPlusScope(cond.SearchPlus, m.table),
145155
).Where(cond.{{.CamelName}})
146156

147-
conn.Count(&total)
148-
err = conn.Scopes(
149-
pageScope(cond.PageCurrent, cond.PageSize),
150-
orderScope(cond.OrderSort...),
151-
).Find(&list).Error
157+
total, list, err = pageHandler[*{{.CamelName}}](conn, cond.PageCurrent, cond.PageSize)
152158
return total, list, err
153159
}
154160

@@ -174,6 +180,7 @@ func (m *default{{.CamelName}}Model) FindListByCursor(ctx context.Context, cond
174180

175181
func (m *default{{.CamelName}}Model) FindAll(ctx context.Context, cond *{{.CamelName}}Query) (list []*{{.CamelName}}, err error) {
176182
conn := m.conn(ctx).Scopes(
183+
searchPlusScope(cond.SearchPlus, m.table),
177184
orderScope(cond.OrderSort...),
178185
)
179186
err = conn.Where(cond.{{.CamelName}}).Find(&list).Error

0 commit comments

Comments
 (0)