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 }