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  }