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