add Count function to Model
				
					
				
			begin work on tracking populated/unpopulated fields
This commit is contained in:
		
							parent
							
								
									93b81308cb
								
							
						
					
					
						commit
						1f9d32193f
					
				
							
								
								
									
										13
									
								
								document.go
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								document.go
									
									
									
									
									
								
							| @ -7,12 +7,13 @@ import ( | ||||
| 
 | ||||
| type Document struct { | ||||
| 	// Created time. updated/added automatically.
 | ||||
| 	Created time.Time `bson:"createdAt" json:"createdAt"` | ||||
| 	Created time.Time `bson:"createdAt" json:"createdAt" tstype:"Date"` | ||||
| 	// Modified time. updated/added automatically.
 | ||||
| 	Modified time.Time `bson:"updatedAt" json:"updatedAt"` | ||||
| 	model    *Model    `bson:"-"` | ||||
| 	exists   bool      `bson:"-"` | ||||
| 	self     any       `bson:"-"` | ||||
| 	Modified        time.Time       `bson:"updatedAt" json:"updatedAt" tstype:"Date"` | ||||
| 	model           *Model          `bson:"-"` | ||||
| 	exists          bool            `bson:"-"` | ||||
| 	self            any             `bson:"-"` | ||||
| 	populatedFields map[string]bool `bson:"-"` | ||||
| } | ||||
| type IDocument interface { | ||||
| 	Append(field string, a ...interface{}) error | ||||
| @ -32,6 +33,8 @@ type IDocument interface { | ||||
| 	serializeToStore() any | ||||
| 	getModel() *Model | ||||
| 	setModel(m Model) | ||||
| 	markPopulated(field string) | ||||
| 	markDepopulated(field string) | ||||
| } | ||||
| 
 | ||||
| type SaveOptions struct { | ||||
|  | ||||
| @ -266,3 +266,11 @@ func incrementAll(item interface{}) { | ||||
| 	default: | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func (d *Document) markPopulated(field string) { | ||||
| 	d.populatedFields[field] = true | ||||
| } | ||||
| 
 | ||||
| func (d *Document) markDepopulated(field string) { | ||||
| 	d.populatedFields[field] = false | ||||
| } | ||||
|  | ||||
							
								
								
									
										5
									
								
								model.go
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								model.go
									
									
									
									
									
								
							| @ -193,6 +193,11 @@ func (m *Model) FindOne(query interface{}, options *options.FindOneOptionsBuilde | ||||
| 	return qq, err | ||||
| } | ||||
| 
 | ||||
| func (m *Model) Count(query interface{}, options *options.CountOptionsBuilder) (int64, error) { | ||||
| 	coll := m.getColl() | ||||
| 	return coll.CountDocuments(context.TODO(), query, options) | ||||
| } | ||||
| 
 | ||||
| func createBase(d any) (reflect.Value, int, string) { | ||||
| 	var n string | ||||
| 	var ri *Model | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user