Make package for protection struct

This commit is contained in:
Nikita Tokarchuk
2020-03-09 23:48:47 +01:00
parent 6e5dccbc96
commit ab4227eaef
3 changed files with 13 additions and 11 deletions
+7 -5
View File
@@ -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"`
}
+3 -3
View File
@@ -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
}