feat: fix mapper bug.
This commit is contained in:
@@ -4,12 +4,12 @@ import (
|
|||||||
"github.com/jinzhu/copier"
|
"github.com/jinzhu/copier"
|
||||||
)
|
)
|
||||||
|
|
||||||
type EnumTypeConverter[DTO ~string, MODEL ~int32] struct {
|
type EnumTypeConverter[DTO ~int32, MODEL ~string] struct {
|
||||||
nameMap map[int32]string
|
nameMap map[int32]string
|
||||||
valueMap map[string]int32
|
valueMap map[string]int32
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewEnumTypeConverter[DTO ~string, MODEL ~int32](nameMap map[int32]string, valueMap map[string]int32) *EnumTypeConverter[DTO, MODEL] {
|
func NewEnumTypeConverter[DTO ~int32, MODEL ~string](nameMap map[int32]string, valueMap map[string]int32) *EnumTypeConverter[DTO, MODEL] {
|
||||||
return &EnumTypeConverter[DTO, MODEL]{
|
return &EnumTypeConverter[DTO, MODEL]{
|
||||||
valueMap: valueMap,
|
valueMap: valueMap,
|
||||||
nameMap: nameMap,
|
nameMap: nameMap,
|
||||||
@@ -21,7 +21,7 @@ func (m *EnumTypeConverter[DTO, MODEL]) ToModel(dto *DTO) *MODEL {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
find, ok := m.valueMap[string(*dto)]
|
find, ok := m.nameMap[int32(*dto)]
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@@ -35,7 +35,7 @@ func (m *EnumTypeConverter[DTO, MODEL]) ToDto(model *MODEL) *DTO {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
find, ok := m.nameMap[int32(*model)]
|
find, ok := m.valueMap[string(*model)]
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@@ -45,8 +45,8 @@ func (m *EnumTypeConverter[DTO, MODEL]) ToDto(model *MODEL) *DTO {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (m *EnumTypeConverter[DTO, MODEL]) NewConverterPair() []copier.TypeConverter {
|
func (m *EnumTypeConverter[DTO, MODEL]) NewConverterPair() []copier.TypeConverter {
|
||||||
srcType := MODEL(0)
|
srcType := MODEL("")
|
||||||
dstType := DTO("")
|
dstType := DTO(0)
|
||||||
|
|
||||||
fromFn := m.ToDto
|
fromFn := m.ToDto
|
||||||
toFn := m.ToModel
|
toFn := m.ToModel
|
||||||
|
|||||||
@@ -43,17 +43,17 @@ func TestCopierMapper(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestEnumTypeConverter(t *testing.T) {
|
func TestEnumTypeConverter(t *testing.T) {
|
||||||
type DtoType string
|
type DtoType int32
|
||||||
type ModelType int32
|
type ModelType string
|
||||||
|
|
||||||
const (
|
const (
|
||||||
DtoTypeOne DtoType = "One"
|
DtoTypeOne DtoType = 1
|
||||||
DtoTypeTwo DtoType = "Two"
|
DtoTypeTwo DtoType = 2
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
ModelTypeOne ModelType = 1
|
ModelTypeOne ModelType = "One"
|
||||||
ModelTypeTwo ModelType = 2
|
ModelTypeTwo ModelType = "Two"
|
||||||
)
|
)
|
||||||
|
|
||||||
nameMap := map[int32]string{
|
nameMap := map[int32]string{
|
||||||
@@ -71,10 +71,10 @@ func TestEnumTypeConverter(t *testing.T) {
|
|||||||
dto := DtoTypeOne
|
dto := DtoTypeOne
|
||||||
model := converter.ToModel(&dto)
|
model := converter.ToModel(&dto)
|
||||||
assert.NotNil(t, model)
|
assert.NotNil(t, model)
|
||||||
assert.Equal(t, int32(1), int32(*model))
|
assert.Equal(t, "One", string(*model))
|
||||||
|
|
||||||
// 测试 ToModel 方法,传入不存在的值
|
// 测试 ToModel 方法,传入不存在的值
|
||||||
dtoInvalid := DtoType("Three")
|
dtoInvalid := DtoType(3)
|
||||||
modelInvalid := converter.ToModel(&dtoInvalid)
|
modelInvalid := converter.ToModel(&dtoInvalid)
|
||||||
assert.Nil(t, modelInvalid)
|
assert.Nil(t, modelInvalid)
|
||||||
|
|
||||||
@@ -83,10 +83,10 @@ func TestEnumTypeConverter(t *testing.T) {
|
|||||||
model = &tmpModelTwo
|
model = &tmpModelTwo
|
||||||
dtoResult := converter.ToDto(model)
|
dtoResult := converter.ToDto(model)
|
||||||
assert.NotNil(t, dtoResult)
|
assert.NotNil(t, dtoResult)
|
||||||
assert.Equal(t, "Two", string(*dtoResult))
|
assert.Equal(t, DtoType(2), *dtoResult)
|
||||||
|
|
||||||
// 测试 ToDto 方法,传入不存在的值
|
// 测试 ToDto 方法,传入不存在的值
|
||||||
tmpModelThree := ModelType(3)
|
tmpModelThree := ModelType("Three")
|
||||||
modelInvalid = &tmpModelThree
|
modelInvalid = &tmpModelThree
|
||||||
dtoInvalidResult := converter.ToDto(modelInvalid)
|
dtoInvalidResult := converter.ToDto(modelInvalid)
|
||||||
assert.Nil(t, dtoInvalidResult)
|
assert.Nil(t, dtoInvalidResult)
|
||||||
|
|||||||
2
tag.bat
2
tag.bat
@@ -8,7 +8,7 @@ git tag jwtutil/v0.0.2
|
|||||||
git tag id/v0.0.2
|
git tag id/v0.0.2
|
||||||
git tag slug/v0.0.1
|
git tag slug/v0.0.1
|
||||||
git tag name_generator/v0.0.1
|
git tag name_generator/v0.0.1
|
||||||
git tag mapper/v0.0.1
|
git tag mapper/v0.0.2
|
||||||
git tag password/v0.0.1
|
git tag password/v0.0.1
|
||||||
|
|
||||||
git tag entgo/v1.1.31
|
git tag entgo/v1.1.31
|
||||||
|
|||||||
Reference in New Issue
Block a user