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