Files
sm-faq-plugin/controllers/site_cache.go
Jakub Zych c60ae6e5d1 feat(19.3-04): purge the host site's page cache after FAQ saves and deletes
- FormAfterCreate/FormAfterUpdate run the locale check, then register a
  purge of kind faq through cooler.PurgeSiteCacheAfterCommit
- new FormAfterDelete purges after the delete commits
- purgeSiteCache helper takes the save transaction from cabana.TxFromContext
  and the purger from cooler.SiteCacheFromApp (site_cache.* keys)
- TestFaqAdminPurgesSiteCache on Postgres
2026-10-15 18:22:45 +02:00

33 lines
848 B
Go

package controllers
import (
"context"
"git.golem15.com/golem15/summercms/modules/backpack"
"git.golem15.com/golem15/summercms/modules/cabana"
"git.golem15.com/golem15/summercms/modules/cooler"
)
// purgeSiteCache registers one site-cache purge of kind and slug, sent by
// the framework's purger (site_cache.purge_url and purge_token) after the
// save transaction of ctx commits. Without a purge configured, or outside a
// save transaction, it does nothing. A purge never fails the save.
func purgeSiteCache(ctx context.Context, app func() *backpack.App, kind, slug string) {
if app == nil {
return
}
a := app()
if a == nil {
return
}
tx, ok := cabana.TxFromContext(ctx)
if !ok {
return
}
purger := cooler.SiteCacheFromApp(a)
if purger == nil {
return
}
cooler.PurgeSiteCacheAfterCommit(ctx, tx, purger, kind, slug)
}