30 lines
985 B
Go
30 lines
985 B
Go
package convert
|
|
|
|
import (
|
|
"example.com/composition/internal/domain"
|
|
"example.com/composition/internal/types"
|
|
"git.yuntuo.hk/k2safe/go-omni/copyx"
|
|
)
|
|
|
|
// The three endpoints reuse one ordinary Go helper and their existing scalar.
|
|
// There is no field list or package/type name JSON to keep in sync.
|
|
func Employee[S any](source S) (domain.Employee, error) {
|
|
var target domain.Employee
|
|
err := copyx.Copy(&target, source,
|
|
copyx.WithFieldNames[S, domain.Employee](map[string]string{"Name": "EmployeeName"}),
|
|
copyx.WithNilPolicy(copyx.NilZero),
|
|
copyx.WithConverter(Name),
|
|
)
|
|
return target, err
|
|
}
|
|
func Response(source domain.Result) (types.EmployeeResponse, error) {
|
|
var target types.EmployeeResponse
|
|
err := copyx.Copy(&target, source, copyx.WithConverter(func(v int64) (string, error) { return ID(v), nil }))
|
|
return target, err
|
|
}
|
|
func ToBatch(source domain.Batch) (domain.BatchDTO, error) {
|
|
var target domain.BatchDTO
|
|
err := copyx.Copy(&target, source)
|
|
return target, err
|
|
}
|