1 Star 0 Fork 0

lipore / plume

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
delete_method.template.go 1.47 KB
一键复制 编辑 原始数据 按行查看 历史
lipore 提交于 2023-04-29 19:22 . feat: update auth
package mysql
import (
"io"
"text/template"
"gitee.com/lipore/plume/db_gorm/gen/code"
"gitee.com/lipore/plume/db_gorm/gen/spec"
)
type deleteMethodData struct {
repositoryMethodData
intOrBoolReturnData
Entity code.Type
Query string
}
var deleteMethodTemplate = `
{{block "repositoryMethod" .}}{{end}}{
entity := &{{typeToCode .Entity}}{}
conn, err := db_gorm.LoadTx(ctx)
if err != nil{
{{- block "errorReturnStmt" .}}{{end -}}
}
var result *gorm.DB
err = conn.Transaction(func(tx *gorm.DB) error {
result = conn{{.Query}}.Delete(&entity)
return result.Error
})
if err != nil {
{{- block "errorReturnStmt" .}}{{end -}}
}
{{- block "returnStmt" .}}{{end}}
}`
func renderDeleteMethod(s spec.MethodSpec, entity code.Type, repository code.Type, operation spec.DeleteOperation, writer io.Writer) error {
tmpl := template.New("delete Method")
tmpl, err := renderRepositoryMethod(tmpl)
if err != nil {
return err
}
tmpl, err = renderReturnStmt(tmpl)
tmpl, err = tmpl.Parse(deleteMethodTemplate)
if err != nil {
return err
}
query, err := renderQueryStmt(s, operation.Query)
if err != nil {
return err
}
tmplData := deleteMethodData{
repositoryMethodData: repositoryMethodData{Receiver: code.Param{Name: "repository", Type: code.PointerType{ContainedType: repository}}, Spec: s},
intOrBoolReturnData: intOrBoolReturnData{
IntReturn: operation.Mode == spec.QueryModeMany,
},
Entity: entity,
Query: query,
}
return tmpl.Execute(writer, tmplData)
}
1
https://gitee.com/lipore/plume.git
git@gitee.com:lipore/plume.git
lipore
plume
plume
v1.7.6

搜索帮助