feat: add configurable timeout for automatically removing resolved reports (#7940)

Supersedes [this PR](https://codeberg.org/lenikadali/forgejo/pulls/1)

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/7940
Reviewed-by: Otto <otto@codeberg.org>
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: Leni Kadali <lenikadali@noreply.codeberg.org>
Co-committed-by: Leni Kadali <lenikadali@noreply.codeberg.org>
This commit is contained in:
Leni Kadali 2025-07-28 14:52:13 +02:00 committed by Earl Warren
commit 29eaab5ff4
10 changed files with 247 additions and 4 deletions

View file

@ -15,6 +15,7 @@ import (
issue_indexer "forgejo.org/modules/indexer/issues"
"forgejo.org/modules/setting"
"forgejo.org/modules/updatechecker"
moderation_service "forgejo.org/services/moderation"
repo_service "forgejo.org/services/repository"
archiver_service "forgejo.org/services/repository/archiver"
user_service "forgejo.org/services/user"
@ -225,6 +226,24 @@ func registerRebuildIssueIndexer() {
})
}
func registerRemoveResolvedReports() {
type ReportConfig struct {
BaseConfig
ConfigKeepResolvedReportsFor time.Duration
}
RegisterTaskFatal("remove_resolved_reports", &ReportConfig{
BaseConfig: BaseConfig{
Enabled: false,
RunAtStart: false,
Schedule: "@every 24h",
},
ConfigKeepResolvedReportsFor: setting.Moderation.KeepResolvedReportsFor,
}, func(ctx context.Context, _ *user_model.User, config Config) error {
reportConfig := config.(*ReportConfig)
return moderation_service.RemoveResolvedReports(ctx, reportConfig.ConfigKeepResolvedReportsFor)
})
}
func initExtendedTasks() {
registerDeleteInactiveUsers()
registerDeleteRepositoryArchives()
@ -240,4 +259,7 @@ func initExtendedTasks() {
registerDeleteOldSystemNotices()
registerGCLFS()
registerRebuildIssueIndexer()
if setting.Moderation.Enabled {
registerRemoveResolvedReports()
}
}