package sitemap import ( "context" "git.golem15.com/golem15/sm-sitemap-plugin/classes" "git.golem15.com/golem15/summercms/modules/conga" "git.golem15.com/golem15/summercms/modules/pact" ) // Jobs registers the rebuild job (classes.RebuildKind) and the IndexNow // job (classes.IndexNowKind, five attempts: 429 and 5xx answers retry) on // conga. func (p *Plugin) Jobs() []pact.Job { return []pact.Job{ conga.Job(p.rebuild, conga.MaxAttempts(3)), conga.Job(p.indexNow, conga.MaxAttempts(classes.IndexNowAttempts)), } } // indexNow sends one IndexNow request (classes.SendIndexNow). func (p *Plugin) indexNow(ctx context.Context, args classes.IndexNowArgs) error { return classes.SendIndexNow(ctx, p.app, args) } // rebuild runs one rebuild of the slot table. It ends the debounce window // first, so record events during the rebuild queue the next one. func (p *Plugin) rebuild(ctx context.Context, _ classes.RebuildArgs) error { if err := classes.ClearPending(ctx, p.app); err != nil { return err } res, err := classes.Rebuild(ctx, p.app) if err != nil { return err } pluginLog.Info("golem15.sitemap: rebuilt", "listed", res.Listed, "files", res.Files, "added", len(res.Added), "changed", len(res.Changed), "removed", len(res.Removed)) return nil }