parent
							
								
									c34b3cc9f9
								
							
						
					
					
						commit
						db3aedd521
					
				@ -0,0 +1,33 @@ | 
				
			||||
package base | 
				
			||||
 | 
				
			||||
import ( | 
				
			||||
	"reflect" | 
				
			||||
) | 
				
			||||
 | 
				
			||||
// GetProtection function finds protection field in the source document otherwise returns nil
 | 
				
			||||
func GetProtection(source interface{}) *Protection { | 
				
			||||
 | 
				
			||||
	v := reflect.ValueOf(source) | 
				
			||||
	if v.Kind() != reflect.Ptr || v.IsNil() { | 
				
			||||
		return nil | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	el := v.Elem() | 
				
			||||
	numField := el.NumField() | 
				
			||||
 | 
				
			||||
	for i := 0; i < numField; i++ { | 
				
			||||
		field := el.Field(i) | 
				
			||||
 | 
				
			||||
		switch field.Interface().(type) { | 
				
			||||
		case *Protection: | 
				
			||||
			return field.Interface().(*Protection) | 
				
			||||
		case Protection: | 
				
			||||
			ptr := field.Addr() | 
				
			||||
			return ptr.Interface().(*Protection) | 
				
			||||
		default: | 
				
			||||
			continue | 
				
			||||
		} | 
				
			||||
	} | 
				
			||||
 | 
				
			||||
	return nil | 
				
			||||
} | 
				
			||||
@ -0,0 +1,11 @@ | 
				
			||||
package base | 
				
			||||
 | 
				
			||||
import ( | 
				
			||||
	"github.com/mongodb/mongo-go-driver/bson/primitive" | 
				
			||||
) | 
				
			||||
 | 
				
			||||
// Protection field stores unique document id and version
 | 
				
			||||
type Protection struct { | 
				
			||||
	X primitive.ObjectID `bson:"_x" json:"_x" index:",hashed"` | 
				
			||||
	V int64              `bson:"_v" json:"_v"` | 
				
			||||
} | 
				
			||||
					Loading…
					
					
				
		Reference in new issue