package controllers import ( "context" "git.golem15.com/golem15/sm-journal-plugin/classes" "git.golem15.com/golem15/summercms/modules/backpack" "git.golem15.com/golem15/summercms/modules/cabana" "gorm.io/gorm" ) // siteCachePurger returns the published *classes.SiteCachePurger and the // save transaction of ctx, for classes.PurgeSiteCacheAfterCommit. Without a // purger (no purge configured) or outside a save transaction it returns a // nil purger, which PurgeSiteCacheAfterCommit ignores. func siteCachePurger(ctx context.Context, app func() *backpack.App) (*classes.SiteCachePurger, *gorm.DB) { if app == nil { return nil, nil } a := app() if a == nil { return nil, nil } purger, ok := a.Lookup[*classes.SiteCachePurger]() if !ok || purger == nil { return nil, nil } tx, ok := cabana.TxFromContext(ctx) if !ok { return nil, nil } return purger, tx }