github.com/yoogoc/kratos-scaffold@v0.0.0-20240402032722-a538b3c18955/generator/tmpl/service_transfer.tmpl (about)

     1  {{- /*gotype: github.com/yoogoc/kratos-scaffold/generator.Service*/ -}}
     2  package service
     3  
     4  import (
     5  	"fmt"
     6  	"{{.CurrentPkgPath}}/biz"
     7  	{{- range $i, $s := .MaybeGoPackages }}
     8  	"{{ $s }}"
     9  	{{- end }}
    10  	v1 "{{.ApiPath}}"
    11  )
    12  
    13  func create{{.Name}}Req2Biz(req *v1.Create{{.Name}}Request) *biz.{{.Name}} {
    14  	{{- range $i, $f := .CreateFields }}
    15  		{{- $reqf := printf "req.%s" ($f.Name | ToCamel) }}
    16  		{{- if $f.FieldType.IsTime }}
    17  			{{ $f.Name }}, _ := time.Parse(time.DateTime, {{ $reqf }})
    18  		{{- end }}
    19  	{{- end }}
    20  	return &biz.{{.Name}}{
    21  		{{- range $i, $f := .CreateFields }}
    22  			{{- $reqf := printf "req.%s" ($f.Name | ToCamel) }}
    23  			{{- if $f.FieldType.IsTime }}
    24  				{{- $reqf = $f.Name }}
    25  			{{- end }}
    26  			{{ $f.Name | ToCamel }}: {{$reqf}},
    27  		{{- end }}
    28  	}
    29  }
    30  
    31  func update{{.Name}}Req2Biz(req *v1.Update{{.Name}}Request) *biz.{{.Name}} {
    32  	{{- range $i, $f := .CreateFields }}
    33  		{{- $reqf := printf "req.%s" ($f.Name | ToCamel) }}
    34  		{{- if $f.FieldType.IsTime }}
    35  			{{ $f.Name }}, _ := time.Parse(time.DateTime, {{ $reqf }})
    36  		{{- end }}
    37  	{{- end }}
    38  	return &biz.{{.Name}}{
    39  		{{- $reqf := printf "req.%s" (.PrimaryField.Name | ToCamel) }}
    40  		{{ .PrimaryField.Name | ToCamel }}: {{$reqf}},
    41  		{{- range $i, $f := .UpdateFields }}
    42  			{{- $reqf := printf "req.%s" ($f.Name | ToCamel) }}
    43  			{{- if $f.FieldType.IsTime }}
    44  				{{- $reqf = $f.Name }}
    45  			{{- end }}
    46  			{{ $f.Name | ToCamel }}: {{$reqf}},
    47  		{{- end }}
    48  	}
    49  }
    50  
    51  func {{.Name | ToLowCamel}}Biz2Proto(item *biz.{{.Name}}) *v1.{{.Name}} {
    52  	return &v1.{{.Name}}{
    53  		{{- range $i, $f := .Fields }}
    54  			{{- $reqf := printf "item.%s" ($f.Name | ToCamel) }}
    55  			{{- if $f.FieldType.IsTime }}
    56  				{{- $reqf = printf $f.FieldType.Biz2Proto $reqf }}
    57  			{{- end }}
    58  			{{ $f.Name | ToCamel }}: {{$reqf}},
    59  		{{- end }}
    60  	}
    61  }
    62  
    63  func bulk{{.Name}}Biz2Proto(list []*biz.{{.Name}}) []*v1.{{.Name}} {
    64  	var target []*v1.{{.Name}}
    65  	for _, item := range list {
    66  		target = append(target, {{.Name | ToLowCamel}}Biz2Proto(item))
    67  	}
    68  	return target
    69  }
    70  
    71  func param{{.Name}}Proto2Biz(req *v1.{{.Name}}Param) *biz.{{.Name}}Param {
    72  	if req == nil {
    73  		return &biz.{{.Name}}Param{}
    74  	}
    75  	{{- range $i, $f := .Fields.ParamFields }}
    76  		{{- if and $f.FieldType.IsTime (not $f.Type.IsIn) }}
    77  			{{- $reqf := printf "req.%s%s" ($f.SourceName | ToCamel) $f.Type.StringProto }}
    78  			var {{ $f.Name }} *time.Time
    79  			if {{ $reqf }} != nil {
    80  				item, err := time.Parse(time.DateTime, *{{$reqf}})
    81  				if err == nil {
    82  					{{ $f.Name }} = &item
    83  				} else {
    84  					// TODO return error
    85  				}
    86  			}
    87  		{{- end }}
    88  	{{- end }}
    89  
    90  	{{- range $i, $f := .Fields.ParamFields }}
    91  		{{- $reqf := printf "req.%s%s" ($f.SourceName | ToCamel) $f.Type.StringProto }}
    92  		{{- if and $f.FieldType.IsTime $f.Type.IsIn }}
    93  			{{ $f.Name }} := make([]time.Time, 0, len({{$reqf}}))
    94  			for _, timestamp := range {{$reqf}} {
    95  				item, _ := time.Parse(time.DateTime, timestamp)
    96  				// TODO return error
    97  				{{ $f.Name }} = append({{ $f.Name }}, item)
    98  			}
    99  		{{- end }}
   100  	{{- end }}
   101  
   102  	return &biz.{{.Name}}Param{
   103  		{{- range $i, $f := .Fields.ParamFields }}
   104  			{{- $reqf := printf "req.%s%s" ($f.SourceName | ToCamel) $f.Type.StringProto }}
   105  			{{- if $f.FieldType.IsTime }}
   106  				{{ $f.Name | ToCamel }}: {{$f.Name}},
   107  			{{- else }}
   108  				{{ $f.Name | ToCamel }}: {{$reqf}},
   109  			{{- end }}
   110  		{{- end }}
   111  	}
   112  }