add before find hook,we need split table with it
This commit is contained in:
		
							parent
							
								
									e5894ca449
								
							
						
					
					
						commit
						0535bd67ee
					
				@ -50,6 +50,7 @@ func RegisterDefaultCallbacks(db *gorm.DB, config *Config) {
 | 
				
			|||||||
	queryCallback := db.Callback().Query()
 | 
						queryCallback := db.Callback().Query()
 | 
				
			||||||
	queryCallback.Register("gorm:query", Query)
 | 
						queryCallback.Register("gorm:query", Query)
 | 
				
			||||||
	queryCallback.Register("gorm:preload", Preload)
 | 
						queryCallback.Register("gorm:preload", Preload)
 | 
				
			||||||
 | 
						queryCallback.Register("gorm:before_query", BeforeQuery)
 | 
				
			||||||
	queryCallback.Register("gorm:after_query", AfterQuery)
 | 
						queryCallback.Register("gorm:after_query", AfterQuery)
 | 
				
			||||||
	queryCallback.Clauses = config.QueryClauses
 | 
						queryCallback.Clauses = config.QueryClauses
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -34,6 +34,10 @@ type AfterDeleteInterface interface {
 | 
				
			|||||||
	AfterDelete(*gorm.DB) error
 | 
						AfterDelete(*gorm.DB) error
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type BeforeFindInterface interface {
 | 
				
			||||||
 | 
						BeforeFind(*gorm.DB) error
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type AfterFindInterface interface {
 | 
					type AfterFindInterface interface {
 | 
				
			||||||
	AfterFind(*gorm.DB) error
 | 
						AfterFind(*gorm.DB) error
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -228,6 +228,28 @@ func Preload(db *gorm.DB) {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func BeforeQuery(db *gorm.DB) {
 | 
				
			||||||
 | 
						if db.Error == nil && db.Statement.Schema != nil && !db.Statement.SkipHooks && db.Statement.Schema.BeforeFind {
 | 
				
			||||||
 | 
							callMethod(db, func(value interface{}, tx *gorm.DB) (called bool) {
 | 
				
			||||||
 | 
								if db.Statement.Schema.BeforeFind {
 | 
				
			||||||
 | 
									if i, ok := value.(BeforeFindInterface); ok {
 | 
				
			||||||
 | 
										called = true
 | 
				
			||||||
 | 
										db.AddError(i.BeforeFind(tx))
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if db.Statement.Schema.BeforeFind {
 | 
				
			||||||
 | 
									if i, ok := value.(BeforeFindInterface); ok {
 | 
				
			||||||
 | 
										called = true
 | 
				
			||||||
 | 
										db.AddError(i.BeforeFind(tx))
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								return called
 | 
				
			||||||
 | 
							})
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func AfterQuery(db *gorm.DB) {
 | 
					func AfterQuery(db *gorm.DB) {
 | 
				
			||||||
	if db.Error == nil && db.Statement.Schema != nil && !db.Statement.SkipHooks && db.Statement.Schema.AfterFind && db.RowsAffected > 0 {
 | 
						if db.Error == nil && db.Statement.Schema != nil && !db.Statement.SkipHooks && db.Statement.Schema.AfterFind && db.RowsAffected > 0 {
 | 
				
			||||||
		callMethod(db, func(value interface{}, tx *gorm.DB) bool {
 | 
							callMethod(db, func(value interface{}, tx *gorm.DB) bool {
 | 
				
			||||||
 | 
				
			|||||||
@ -36,7 +36,7 @@ type Schema struct {
 | 
				
			|||||||
	BeforeUpdate, AfterUpdate bool
 | 
						BeforeUpdate, AfterUpdate bool
 | 
				
			||||||
	BeforeDelete, AfterDelete bool
 | 
						BeforeDelete, AfterDelete bool
 | 
				
			||||||
	BeforeSave, AfterSave     bool
 | 
						BeforeSave, AfterSave     bool
 | 
				
			||||||
	AfterFind                 bool
 | 
						BeforeFind, AfterFind     bool
 | 
				
			||||||
	err                       error
 | 
						err                       error
 | 
				
			||||||
	initialized               chan struct{}
 | 
						initialized               chan struct{}
 | 
				
			||||||
	namer                     Namer
 | 
						namer                     Namer
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user