Skip to content

Commit

Permalink
update code
Browse files Browse the repository at this point in the history
  • Loading branch information
muidea committed Oct 6, 2023
1 parent 8c6d8bd commit 07d195d
Show file tree
Hide file tree
Showing 6 changed files with 149 additions and 86 deletions.
5 changes: 3 additions & 2 deletions provider/local/filter.go
Original file line number Diff line number Diff line change
Expand Up @@ -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{}}
}

Expand Down Expand Up @@ -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
}
Expand Down Expand Up @@ -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
}

Expand Down
6 changes: 1 addition & 5 deletions provider/local/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
}

Expand Down
18 changes: 14 additions & 4 deletions provider/remote/filter.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
)
Expand Down Expand Up @@ -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
}

Expand Down Expand Up @@ -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())
}
}
}

Expand Down
16 changes: 5 additions & 11 deletions provider/remote/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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()))
Expand Down
149 changes: 90 additions & 59 deletions test/model_remote_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down Expand Up @@ -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 {
Expand Down Expand Up @@ -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 {
Expand Down Expand Up @@ -675,7 +641,11 @@ func TestRemoteSystem(t *testing.T) {
user2 := &User{Name: "demo2", EMail: "[email protected]"}

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 {
Expand Down Expand Up @@ -915,7 +885,11 @@ func TestRemoteBatchQuery(t *testing.T) {
user2 := &User{Name: "demo2", EMail: "[email protected]"}

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 {
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -1190,7 +1186,11 @@ func TestRemoteBatchQueryPtr(t *testing.T) {
user2 := &User{Name: "demo2", EMail: "[email protected]"}

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 {
Expand Down Expand Up @@ -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 {
Expand All @@ -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
Expand Down Expand Up @@ -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())
Expand Down
41 changes: 36 additions & 5 deletions test/reference_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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())
Expand Down Expand Up @@ -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())
Expand Down

0 comments on commit 07d195d

Please sign in to comment.