diff --git a/provider/local/filter.go b/provider/local/filter.go index 55b44fb..cdeec88 100644 --- a/provider/local/filter.go +++ b/provider/local/filter.go @@ -33,7 +33,7 @@ type filter struct { sortFilter *util.SortFilter } -func NewFilter(valuePtr *ValueImpl) *filter { +func newFilter(valuePtr *ValueImpl) *filter { return &filter{bindValue: valuePtr, params: map[string]*filterItem{}} } @@ -177,7 +177,7 @@ func (s *filter) ValueMask(val interface{}) (err error) { bindType := reflect.Indirect(s.bindValue.value).Type().String() maskType := reflect.Indirect(qv).Type().String() if bindType != maskType { - err = fmt.Errorf("ValueMask failed, mismatch mask value, bindType:%v, maskType:%v", bindType, maskType) + err = fmt.Errorf("mismatch mask value, bindType:%v, maskType:%v", bindType, maskType) log.Errorf("ValueMask failed, err:%v", err.Error()) return } @@ -230,6 +230,7 @@ func (s *filter) MaskModel() (ret om.Model) { objPtr, objErr := getValueModel(maskVal.value) if objErr != nil { + log.Errorf("MaskModel failed, getValueModel error:%s", objErr.Error()) return } diff --git a/provider/local/provider.go b/provider/local/provider.go index 5d7c025..1657070 100644 --- a/provider/local/provider.go +++ b/provider/local/provider.go @@ -16,10 +16,6 @@ func init() { _codec = codec.New(ElemDependValue) } -func GetCodec() codec.Codec { - return _codec -} - func GetType(vType reflect.Type) (ret model.Type, err error) { ret, err = NewType(vType) return @@ -78,7 +74,7 @@ func GetEntityModel(entity interface{}) (ret model.Model, err error) { func GetModelFilter(vModel model.Model) (ret model.Filter, err error) { valuePtr := NewValue(reflect.ValueOf(vModel.Interface(true))) - ret = NewFilter(valuePtr) + ret = newFilter(valuePtr) return } diff --git a/provider/remote/filter.go b/provider/remote/filter.go index 98b5aed..749b599 100644 --- a/provider/remote/filter.go +++ b/provider/remote/filter.go @@ -4,6 +4,7 @@ import ( "encoding/json" "fmt" + "github.com/muidea/magicCommon/foundation/log" "github.com/muidea/magicCommon/foundation/util" "github.com/muidea/magicOrm/model" ) @@ -251,13 +252,19 @@ func (s *ObjectFilter) ValueMask(val interface{}) (err error) { objectValuePtr, err = DecodeObjectValue(byteVal) } } + if objectValuePtr == nil { + err = fmt.Errorf("illegal mask value") + log.Errorf("ValueMask failed, err:%v", err.Error()) + return + } - if objectValuePtr != nil { - s.MaskValue = objectValuePtr + if s.bindObject.GetPkgKey() != objectValuePtr.GetPkgKey() { + err = fmt.Errorf("mismatch mask value, bindPkgKey:%v, maskPkgKey:%v", s.bindObject.GetPkgKey(), objectValuePtr.GetPkgKey()) + log.Errorf("ValueMask failed, err:%v", err.Error()) return } - err = fmt.Errorf("illegal mask value") + s.MaskValue = objectValuePtr return } @@ -367,7 +374,10 @@ func (s *ObjectFilter) MaskModel() model.Model { maskObject := s.bindObject.Copy(reset) if reset { for _, val := range s.MaskValue.Fields { - maskObject.SetFieldValue(val.Name, val.GetValue()) + err := maskObject.SetFieldValue(val.Name, val.GetValue()) + if err != nil { + log.Errorf("MaskModel failed, maskObject.SetFieldValue error:%s", err.Error()) + } } } diff --git a/provider/remote/provider.go b/provider/remote/provider.go index 31c2f40..9158964 100644 --- a/provider/remote/provider.go +++ b/provider/remote/provider.go @@ -18,10 +18,6 @@ func init() { _codec = codec.New(ElemDependValue) } -func GetCodec() codec.Codec { - return _codec -} - func GetEntityType(entity interface{}) (ret model.Type, err error) { objPtr, objOK := entity.(*Object) if objOK { @@ -152,13 +148,11 @@ func ElemDependValue(vVal model.Value) (ret []model.Value, err error) { } return } - /* - objectPtrValue, objectPtrOK := vVal.Get().(*ObjectValue) - if objectPtrOK { - ret = append(ret, NewValue(objectPtrValue)) - return - } - */ + objectPtrValue, objectPtrOK := vVal.Get().(*ObjectValue) + if objectPtrOK { + ret = append(ret, NewValue(objectPtrValue)) + return + } rVal := reflect.ValueOf(vVal.Get()) if rVal.Kind() != reflect.Slice { ret = append(ret, NewValue(vVal.Get())) diff --git a/test/model_remote_test.go b/test/model_remote_test.go index b49d465..fdb97e8 100644 --- a/test/model_remote_test.go +++ b/test/model_remote_test.go @@ -10,48 +10,6 @@ import ( "github.com/muidea/magicOrm/provider/remote" ) -func getSliceObjectValue(val interface{}) (ret *remote.SliceObjectValue, err error) { - objVal, objErr := helper.GetSliceObjectValue(val) - if objErr != nil { - err = objErr - return - } - - data, dataErr := remote.EncodeSliceObjectValue(objVal) - if dataErr != nil { - err = dataErr - return - } - - ret, err = remote.DecodeSliceObjectValue(data) - if err != nil { - return - } - - return -} - -func getSliceObjectPtrValue(val interface{}) (ret *remote.SliceObjectValue, err error) { - objVal, objErr := helper.GetSliceObjectValue(val) - if objErr != nil { - err = objErr - return - } - - data, dataErr := remote.EncodeSliceObjectValue(objVal) - if dataErr != nil { - err = dataErr - return - } - - ret, err = remote.DecodeSliceObjectValue(data) - if err != nil { - return - } - - return -} - func TestRemoteGroup(t *testing.T) { orm.Initialize() defer orm.Uninitialized() @@ -89,7 +47,11 @@ func TestRemoteGroup(t *testing.T) { } objList := []interface{}{groupDef, userDef, statusDef} - registerModel(remoteProvider, objList) + _, err = registerModel(remoteProvider, objList) + if err != nil { + t.Errorf("registerModel failed, err:%s", err.Error()) + return + } err = o1.Drop(statusDef) if err != nil { @@ -335,7 +297,11 @@ func TestRemoteUser(t *testing.T) { } objList := []interface{}{groupDef, userDef, statusDef} - registerModel(remoteProvider, objList) + _, err = registerModel(remoteProvider, objList) + if err != nil { + t.Errorf("registerModel failed, err:%s", err.Error()) + return + } err = o1.Drop(statusDef) if err != nil { @@ -675,7 +641,11 @@ func TestRemoteSystem(t *testing.T) { user2 := &User{Name: "demo2", EMail: "123@demo.com"} objList := []interface{}{groupDef, userDef, statusDef, sysDef} - registerModel(remoteProvider, objList) + _, err = registerModel(remoteProvider, objList) + if err != nil { + t.Errorf("registerModel failed, err:%s", err.Error()) + return + } err = o1.Drop(statusDef) if err != nil { @@ -915,7 +885,11 @@ func TestRemoteBatchQuery(t *testing.T) { user2 := &User{Name: "demo2", EMail: "123@demo.com"} objList := []interface{}{groupDef, userDef, statusDef} - registerModel(remoteProvider, objList) + _, err = registerModel(remoteProvider, objList) + if err != nil { + t.Errorf("registerModel failed, err:%s", err.Error()) + return + } err = o1.Drop(statusDef) if err != nil { @@ -1097,10 +1071,27 @@ func TestRemoteBatchQuery(t *testing.T) { return } - filter.Equal("name", user1.Name) - filter.In("group", groupListVal) - filter.Like("email", user1.EMail) - filter.ValueMask(maskVal) + err = filter.Equal("name", user1.Name) + if err != nil { + t.Errorf("filter.Equal err:%s", err.Error()) + return + } + + err = filter.In("group", groupListVal) + if err != nil { + t.Errorf("filter.In err:%s", err.Error()) + return + } + err = filter.Like("email", user1.EMail) + if err != nil { + t.Errorf("filter.Like err:%s", err.Error()) + return + } + err = filter.ValueMask(maskVal) + if err != nil { + t.Errorf("filter.ValueMask err:%s", err.Error()) + return + } pageFilter := &util.Pagination{PageNum: 0, PageSize: 100} filter.Page(pageFilter) @@ -1134,7 +1125,12 @@ func TestRemoteBatchQuery(t *testing.T) { return } - userFilter.In("group", groupListVal) + err = userFilter.In("group", groupListVal) + if err != nil { + t.Errorf("userFilter.In failed, err:%s", err.Error()) + return + } + userModelList, userModelErr = o1.BatchQuery(userFilter) if userModelErr != nil { err = userModelErr @@ -1190,7 +1186,11 @@ func TestRemoteBatchQueryPtr(t *testing.T) { user2 := &User{Name: "demo2", EMail: "123@demo.com"} objList := []interface{}{groupDef, userDef, statusDef} - registerModel(remoteProvider, objList) + _, err = registerModel(remoteProvider, objList) + if err != nil { + t.Errorf("registerModel failed, err:%s", err.Error()) + return + } err = o1.Drop(statusDef) if err != nil { @@ -1400,10 +1400,26 @@ func TestRemoteBatchQueryPtr(t *testing.T) { return } - filter.Equal("name", user1.Name) - filter.In("group", groupListVal) - filter.Like("email", user1.EMail) - filter.ValueMask(maskVal) + err = filter.Equal("name", user1.Name) + if err != nil { + t.Errorf("filter.Equal failed, err:%s", err.Error()) + return + } + err = filter.In("group", groupListVal) + if err != nil { + t.Errorf("filter.In failed, err:%s", err.Error()) + return + } + err = filter.Like("email", user1.EMail) + if err != nil { + t.Errorf("filter.Like failed, err:%s", err.Error()) + return + } + err = filter.ValueMask(maskVal) + if err != nil { + t.Errorf("filter.ValueMask failed, err:%s", err.Error()) + return + } userModelList, userModelErr = o1.BatchQuery(filter) if userModelErr != nil { @@ -1429,7 +1445,12 @@ func TestRemoteBatchQueryPtr(t *testing.T) { return } - filter2.In("group", groupListVal) + err = filter2.In("group", groupListVal) + if err != nil { + t.Errorf("filter.In failed, err:%s", err.Error()) + return + } + userModelList, userModelErr = o1.BatchQuery(filter2) if userModelErr != nil { err = userModelErr @@ -1608,8 +1629,18 @@ func TestPolicy(t *testing.T) { return } - filter.Equal("status", statusValue) - filter.ValueMask(maskVal) + err = filter.Equal("status", statusValue) + if err != nil { + t.Errorf("filter.Equal failed, err:%s", err.Error()) + return + } + + err = filter.ValueMask(maskVal) + if err != nil { + t.Errorf("filter.ValueMask failed, err:%s", err.Error()) + return + } + cModelList, cModelErr := o1.BatchQuery(filter) if cModelErr != nil { t.Errorf("batch query compose failed, err:%s", cModelErr.Error()) diff --git a/test/reference_test.go b/test/reference_test.go index 2c687f2..c04280f 100644 --- a/test/reference_test.go +++ b/test/reference_test.go @@ -203,8 +203,18 @@ func TestReferenceLocal(t *testing.T) { return } - filter.Equal("name", "hi") - filter.ValueMask(&Reference{FValue: &fVal, TimeStamp: &ts2, Flag: &flag2, PtrArray: &strArray2, PtrStrArray: &ptrStrArray}) + err = filter.Equal("name", "hi") + if err != nil { + t.Errorf("filter.Equal failed, err:%s", err.Error()) + return + } + + err = filter.ValueMask(&Reference{FValue: &fVal, TimeStamp: &ts2, Flag: &flag2, PtrArray: &strArray2, PtrStrArray: &ptrStrArray}) + if err != nil { + t.Errorf("filter.ValueMask failed, err:%s", err.Error()) + return + } + bqModelList, bqModelErr := o1.BatchQuery(filter) if bqModelErr != nil { t.Errorf("BatchQuery failed, err:%s", bqModelErr.Error()) @@ -467,9 +477,30 @@ func TestReferenceRemote(t *testing.T) { return } - filter.Equal("name", "hi") - filter.ValueMask(&Reference{FValue: &fVal, TimeStamp: &ts2, Flag: &flag2, PtrArray: &strArray2, PtrStrArray: &ptrStrArray}) - filter.Like("strArray", "Abc") + err = filter.Equal("name", "hi") + if err != nil { + t.Errorf("filter.Equal failed, err:%s", err.Error()) + return + } + + maskVal, maskErr := helper.GetObjectValue(&Reference{FValue: &fVal, TimeStamp: &ts2, Flag: &flag2, PtrArray: &strArray2, PtrStrArray: &ptrStrArray}) + if maskErr != nil { + t.Errorf("helper.GetObjectValue failed, err:%s", err.Error()) + return + } + + err = filter.ValueMask(maskVal) + if err != nil { + t.Errorf("filter.ValueMask failed, err:%s", err.Error()) + return + } + + err = filter.Like("strArray", "Abc") + if err != nil { + t.Errorf("filter.Like failed, err:%s", err.Error()) + return + } + bqModelList, bqModelErr := o1.BatchQuery(filter) if bqModelErr != nil { t.Errorf("BatchQuery failed, err:%s", bqModelErr.Error())