feat: copier util

This commit is contained in:
Bobo
2025-05-21 21:58:26 +08:00
parent 9035e79520
commit c03ac708f0
5 changed files with 88 additions and 2 deletions

43
copierutil/converters.go Normal file
View File

@@ -0,0 +1,43 @@
package copierutil
import (
"time"
"github.com/jinzhu/copier"
"google.golang.org/protobuf/types/known/timestamppb"
"github.com/tx7do/go-utils/timeutil"
"github.com/tx7do/go-utils/trans"
)
var TimeToStringConverter = copier.TypeConverter{
SrcType: &time.Time{}, // 源类型
DstType: trans.Ptr(""), // 目标类型
Fn: func(src interface{}) (interface{}, error) {
return timeutil.TimeToTimeString(src.(*time.Time)), nil
},
}
var StringToTimeConverter = copier.TypeConverter{
SrcType: trans.Ptr(""),
DstType: &time.Time{},
Fn: func(src interface{}) (interface{}, error) {
return timeutil.StringTimeToTime(src.(*string)), nil
},
}
var TimeToTimestamppbConverter = copier.TypeConverter{
SrcType: &time.Time{},
DstType: &timestamppb.Timestamp{},
Fn: func(src interface{}) (interface{}, error) {
return timeutil.TimeToTimestamppb(src.(*time.Time)), nil
},
}
var TimestamppbToTimeConverter = copier.TypeConverter{
SrcType: &timestamppb.Timestamp{},
DstType: &time.Time{},
Fn: func(src interface{}) (interface{}, error) {
return timeutil.TimestamppbToTime(src.(*timestamppb.Timestamp)), nil
},
}