github.com/yoogoc/kratos-scaffold@v0.0.0-20240402032722-a538b3c18955/generator/tmpl/data_proto_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  	"{{.CurrentPkgPath}}/biz"
     8  	"github.com/go-kratos/kratos/v2/log"
     9  	{{$modelName}}V1 "{{ .ProtoPkgPath }}"
    10  )
    11  
    12  var _ biz.{{.Name | ToCamel}}Repo = (*{{$modelName}}Repo)(nil)
    13  
    14  type {{$modelName}}Repo struct {
    15  	{{$modelName}} {{$modelName}}V1.{{.Name | ToCamel}}ServiceClient
    16  	log   *log.Helper
    17  }
    18  
    19  func New{{.Name | ToCamel}}Repo(logger log.Logger, {{$modelName}} {{$modelName}}V1.{{.Name | ToCamel}}ServiceClient) biz.{{.Name | ToCamel}}Repo {
    20  	return &{{$modelName}}Repo{
    21  		{{$modelName}}: {{$modelName}},
    22  		log:  log.NewHelper(log.With(logger, "module", "data/{{$modelName}}")),
    23  	}
    24  }
    25  
    26  func (r {{$modelName}}Repo) Create(ctx context.Context, {{$modelName}} *biz.{{.Name | ToCamel}}) (*biz.{{.Name | ToCamel}}, error) {
    27  	reply, err := r.{{$modelName}}.Create(ctx, &{{$modelName}}V1.Create{{.Name | ToCamel}}Request{
    28  		{{- range $i, $f := .CreateFields }}
    29  			{{- if eq $f.FieldType.IsTime }}
    30  				{{ $f.Name | ToCamel }}: {{$modelName}}.{{ $f.Name | ToCamel }}.Format(time.DateTime),
    31  			{{- else }}
    32  				{{ $f.Name | ToCamel }}: {{$modelName}}.{{ $f.Name | ToCamel }},
    33  			{{- end }}
    34  		{{- end }}
    35  	})
    36  	if err != nil {
    37  		return nil, err
    38  	}
    39  	return {{$modelName}}Proto2Biz(reply.{{.Name | ToCamel}}), nil
    40  
    41  }
    42  
    43  func (r {{$modelName}}Repo) Update(ctx context.Context, {{$modelName}} *biz.{{.Name | ToCamel}}) (*biz.{{.Name | ToCamel}}, error) {
    44  	reply, err := r.{{$modelName}}.Update(ctx, &{{$modelName}}V1.Update{{.Name | ToCamel}}Request{
    45  		{{- range $i, $f := .UpdateFields }}
    46  			{{- if eq $f.FieldType.IsTime }}
    47  				{{ $f.Name | ToCamel }}: {{$modelName}}.{{ $f.Name | ToCamel }}.Format(time.DateTime),
    48  			{{- else }}
    49  				{{ $f.Name | ToCamel }}: {{$modelName}}.{{ $f.Name | ToCamel }},
    50  			{{- end }}
    51  		{{- end }}
    52  	})
    53  	if err != nil {
    54  		return nil, err
    55  	}
    56  	return {{$modelName}}Proto2Biz(reply.{{.Name | ToCamel}}), nil
    57  }
    58  
    59  func (r {{$modelName}}Repo) DestroyBy(ctx context.Context, param *biz.{{.Name | ToCamel}}Param) (int, error) {
    60  	_, err := r.{{$modelName}}.DestroyBy(ctx, &{{$modelName}}V1.Destroy{{.Name | ToCamel}}ByRequest{
    61  		Param: {{.Name | ToLowerCamel}}ParamBiz2Proto(param),
    62  	})
    63  	return 0, err
    64  }
    65  
    66  func (r {{$modelName}}Repo) List(ctx context.Context, param *biz.{{.Name | ToCamel}}Param, page, size int) ([]*biz.{{.Name | ToCamel}}, int, error) {
    67  	reply, err := r.{{$modelName}}.List(ctx, &{{$modelName}}V1.List{{.Name | ToCamel}}Request{
    68  		Param: {{.Name | ToLowerCamel}}ParamBiz2Proto(param),
    69  		Page:     uint32(page),
    70  		PageSize: uint32(size),
    71  	})
    72  	if err != nil {
    73  		return nil, 0, err
    74  	}
    75  	return bulk{{.Name | ToCamel}}Proto2Biz(reply.{{.Name | ToCamelPlural}}), int(reply.Count), nil
    76  }
    77  
    78  func (r {{$modelName}}Repo) FindBy(ctx context.Context, param *biz.{{.Name | ToCamel}}Param) (*biz.{{.Name | ToCamel}}, error) {
    79  	reply, err := r.{{$modelName}}.FindBy(ctx, &{{$modelName}}V1.Find{{.Name | ToCamel}}ByRequest{
    80  		Param: {{.Name | ToLowerCamel}}ParamBiz2Proto(param),
    81  	})
    82  	if err != nil {
    83  		return nil, err
    84  	}
    85  	return {{$modelName}}Proto2Biz(reply.{{ .Name | ToCamel }}), nil
    86  }