github.com/yoogoc/kratos-scaffold@v0.0.0-20240402032722-a538b3c18955/generator/tmpl/data_ent_data.tmpl (about) 1 {{- /*gotype: github.com/yoogoc/kratos-scaffold/generator.Data*/ -}} 2 {{$modelName := .Name |ToLowerCamel}} 3 package data 4 5 import ( 6 "context" 7 "time" 8 "github.com/go-kratos/kratos/v2/log" 9 "{{.CurrentPkgPath}}/biz" 10 "{{.CurrentPkgPath}}/data/ent" 11 ) 12 13 var _ biz.{{.Name | ToCamel}}Repo = (*{{$modelName}}Repo)(nil) 14 15 type {{$modelName}}Repo struct { 16 data *Data 17 log *log.Helper 18 } 19 20 func New{{.Name | ToCamel}}Repo(data *Data, logger log.Logger) biz.{{.Name | ToCamel}}Repo { 21 return &{{$modelName}}Repo{ 22 data: data, 23 log: log.NewHelper(log.With(logger, "module", "data/{{$modelName}}")), 24 } 25 } 26 27 func (r {{$modelName}}Repo) Create(ctx context.Context, {{$modelName}} *biz.{{.Name | ToCamel}}) (*biz.{{.Name | ToCamel}}, error) { 28 client := r.data.EntClient(ctx) 29 row, err := client.{{.Name | ToCamel}}.Create(). 30 {{- range $i, $f := .CreateFields }} 31 Set{{ $f.Name | ToEntName }}({{$modelName}}.{{ $f.Name | ToCamel }}). 32 {{- end }} 33 Save(ctx) 34 if err != nil { 35 return nil, err 36 } 37 return {{$modelName}}Ent2Biz(row), nil 38 } 39 40 func (r {{$modelName}}Repo) Update(ctx context.Context, {{$modelName}} *biz.{{.Name | ToCamel}}) (*biz.{{.Name | ToCamel}}, error) { 41 client := r.data.EntClient(ctx) 42 row, err := client.{{.Name | ToCamel}}.UpdateOneID({{$modelName}}.Id). 43 {{- range $i, $f := .UpdateFields }} 44 Set{{ $f.Name | ToEntName }}({{$modelName}}.{{ $f.Name | ToCamel }}). 45 {{- end }} 46 Save(ctx) 47 if err != nil { 48 return nil, err 49 } 50 return {{$modelName}}Ent2Biz(row), nil 51 } 52 53 func (r {{$modelName}}Repo) DestroyBy(ctx context.Context, param *biz.{{.Name | ToCamel}}Param) (int, error) { 54 client := r.data.EntClient(ctx) 55 {{- if .SoftDelete }} 56 return client.{{.Name | ToCamel}}.Update().Where({{$modelName}}Param2Predicates(param)...).SetDeletedAt(time.Now()).Save(ctx) 57 {{- else }} 58 return client.{{.Name | ToCamel}}.Delete().Where({{$modelName}}Param2Predicates(param)...).Exec(ctx) 59 {{- end }} 60 } 61 62 func (r {{$modelName}}Repo) List(ctx context.Context, param *biz.{{.Name | ToCamel}}Param, page, size int) ([]*biz.{{.Name | ToCamel}}, int, error) { 63 client := r.data.EntClient(ctx) 64 query := client.{{.Name | ToCamel}}.Query().Where({{$modelName}}Param2Predicates(param)...) 65 count, err := query.Clone().Count(ctx) 66 if err != nil { 67 return nil, 0, err 68 } 69 if size > 0 { 70 query = query.Limit(size).Offset((page - 1) * size) 71 } 72 rows, err := query.All(ctx) 73 if err != nil { 74 return nil, 0, err 75 } 76 return bulk{{.Name | ToCamel}}Ent2Biz(rows), count, nil 77 } 78 79 func (r {{$modelName}}Repo) FindBy(ctx context.Context, param *biz.{{.Name | ToCamel}}Param) (*biz.{{.Name | ToCamel}}, error) { 80 client := r.data.EntClient(ctx) 81 rows, err := client.{{.Name | ToCamel}}.Query().Where({{$modelName}}Param2Predicates(param)...).First(ctx) 82 if err != nil { 83 return nil, err 84 } 85 return {{$modelName}}Ent2Biz(rows), nil 86 }