1 Star 1 Fork 0

1701 / gpa

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
repo.go 2.83 KB
一键复制 编辑 原始数据 按行查看 历史
1701 提交于 2022-01-26 20:35 . 增加错误数统计
package generator
import (
"os"
"text/template"
"time"
"gitee.com/knowgo/gpa/engine/generator/defines"
rdesc "gitee.com/knowgo/gpa/engine/generator/repo-desc"
"gitee.com/knowgo/gpa/engine/sql/names"
)
type FuncInfo struct {
rdesc.FuncDesc
Repo *repo
Name string
Template string
}
type repo struct {
Instance string
Name string
RunTimePackage string
LogoPackage string
Funcs []*FuncInfo
}
func (g *Generator) createRepoFile(rf *defines.RepoFile, tmpl *template.Template) (int, error) {
dest := g.Info.CreateImplementFilePath(rf.Name)
repos := []*repo{}
errCount := 0
for _, r := range rf.Repos {
rp := &repo{
Name: r.Name,
RunTimePackage: r.RunTimePackage,
LogoPackage: r.LogoPackage,
Instance: names.LowerFirstChar(r.Name), // strings.ToLower(r.Name[:1]) + r.Name[1:],
}
repos = append(repos, rp)
for _, fn := range r.Funcs {
m := g.getMethod(fn)
// g := gen.GetGenerator(fn)
if m != nil {
desc, err := m.Parse()
if err != nil {
errCount++
g.logger.Error(err)
continue
}
fnInfo := &FuncInfo{
FuncDesc: *desc,
Name: fn.Name,
Repo: rp,
Template: string(fn.Template),
}
rp.Funcs = append(rp.Funcs, fnInfo)
// f.SQL = sql
// fmt.Println("\t", f.Name, sql)
} else {
g.logger.Errorf("func name [%s] is not support", fn.Name)
}
}
}
// funcs := template.FuncMap{"join": strings.Join}
// tmpl, err := template.ParseFS(templates, "resources/repo.tpl")
// if err != nil {
// return err
// }
// tmpl, err = tmpl.Funcs(funcs).ParseFS(templates,
// "resources/repo-body.tpl",
// "resources/func-truncate.tpl",
// "resources/func-insert.tpl",
// "resources/func-update.tpl",
// "resources/func-delete.tpl",
// "resources/func-find.tpl",
// "resources/func-find-block-read-row.tpl",
// "resources/func-find-block-read-rows.tpl",
// "resources/func-find-block-read-rows-callback.tpl",
// "resources/func-count.tpl")
// if err != nil {
// return err
// }
// tmpl.ParseFS() .Funcs(funcs)
file, err := os.OpenFile(dest, os.O_CREATE|os.O_TRUNC|os.O_RDWR, os.ModePerm)
if err != nil {
return errCount, err
}
defer file.Close()
// buf := bytes.NewBuffer([]byte{})
return errCount, tmpl.Execute(file, map[string]interface{}{
"Space": "",
"package": g.Info.Dialect,
"imports": rf.Imports,
"Repos": repos,
"Time": time.Now().Format("2006-01-02 15:04:05"),
})
}
/** $. 引用外部 .变量
// 下面的 $.Instance 引用的是 pipeline.Instance
// .Name 怎是引用 .Funcs 的遍历项的 .Name
{{ range .Funcs }}
func ({{$.Instance}} *{{$.Name}}) {{.Name}}(user *models.User, name string) (*models.User, error) {
user.Name = name
_, err := {{$.Instance}}.query.Exec("insert into user ")
if err != nil {
return nil, err
}
return user, nil
}
{{ end }}
**/
Go
1
https://gitee.com/knowgo/gpa.git
git@gitee.com:knowgo/gpa.git
knowgo
gpa
gpa
v0.2.14

搜索帮助