Make package for protection struct

v2
Nikita Tokarchuk 4 years ago
parent 6e5dccbc96
commit ab4227eaef
  1. 12
      mongox/base/getprotection.go
  2. 6
      mongox/base/protection/key.go
  3. 6
      mongox/query/compose.go

@ -2,10 +2,12 @@ package base
import (
"reflect"
"github.com/mainnika/mongox-go-driver/v2/mongox/base/protection"
)
// GetProtection function finds protection field in the source document otherwise returns nil
func GetProtection(source interface{}) *Protection {
func GetProtection(source interface{}) *protection.Key {
v := reflect.ValueOf(source)
if v.Kind() != reflect.Ptr || v.IsNil() {
@ -19,11 +21,11 @@ func GetProtection(source interface{}) *Protection {
field := el.Field(i)
switch field.Interface().(type) {
case *Protection:
return field.Interface().(*Protection)
case Protection:
case *protection.Key:
return field.Interface().(*protection.Key)
case protection.Key:
ptr := field.Addr()
return ptr.Interface().(*Protection)
return ptr.Interface().(*protection.Key)
default:
continue
}

@ -1,11 +1,11 @@
package base
package protection
import (
"go.mongodb.org/mongo-driver/bson/primitive"
)
// Protection field stores unique document id and version
type Protection struct {
// Key field stores unique document id and version
type Key struct {
X primitive.ObjectID `bson:"_x" json:"_x" index:",hashed"`
V int64 `bson:"_v" json:"_v"`
}

@ -6,7 +6,7 @@ import (
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/bson/primitive"
"github.com/mainnika/mongox-go-driver/v2/mongox/base"
"github.com/mainnika/mongox-go-driver/v2/mongox/base/protection"
)
// Compose is a function to compose filters into a single query
@ -87,10 +87,10 @@ func applyProtection(q *Query, f interface{}) bool {
var v *int64
switch f := f.(type) {
case base.Protection:
case protection.Key:
x = &f.X
v = &f.V
case *base.Protection:
case *protection.Key:
if f == nil {
return false
}

Loading…
Cancel
Save