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.Register("gorm:query", Query)
 | 
			
		||||
	queryCallback.Register("gorm:preload", Preload)
 | 
			
		||||
	queryCallback.Register("gorm:before_query", BeforeQuery)
 | 
			
		||||
	queryCallback.Register("gorm:after_query", AfterQuery)
 | 
			
		||||
	queryCallback.Clauses = config.QueryClauses
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -34,6 +34,10 @@ type AfterDeleteInterface interface {
 | 
			
		||||
	AfterDelete(*gorm.DB) error
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type BeforeFindInterface interface {
 | 
			
		||||
	BeforeFind(*gorm.DB) error
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type AfterFindInterface interface {
 | 
			
		||||
	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) {
 | 
			
		||||
	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 {
 | 
			
		||||
 | 
			
		||||
@ -36,7 +36,7 @@ type Schema struct {
 | 
			
		||||
	BeforeUpdate, AfterUpdate bool
 | 
			
		||||
	BeforeDelete, AfterDelete bool
 | 
			
		||||
	BeforeSave, AfterSave     bool
 | 
			
		||||
	AfterFind                 bool
 | 
			
		||||
	BeforeFind, AfterFind     bool
 | 
			
		||||
	err                       error
 | 
			
		||||
	initialized               chan struct{}
 | 
			
		||||
	namer                     Namer
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user