1
0
Fork 0
mirror of https://codeberg.org/forgejo/forgejo.git synced 2025-09-20 19:06:58 +00:00

Add registerRemoveResolvedReports task

Added a first attempt at the registerRemoveResolvedReports
task. Has an issue with the usage of ctx
as in services/moderation/reporting, the services/context
package is imported explictly while for other tasks
in the tasks_extended module, it seems to be imported implicitly.
This commit is contained in:
Leni Kadali 2025-05-15 17:48:50 +03:00
parent 7a124fb0ce
commit 7d885406cf
2 changed files with 42 additions and 0 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
Timeout time.Duration
}
RegisterTaskFatal("remove_resolved_reports", &ReportConfig{
BaseConfig: BaseConfig{
Enabled: false,
RunAtStart: false,
Schedule: "@every 72h",
},
Timeout: time.Duration(setting.Moderation.RemoveResolvedReportsTimeout) * time.Second,
}, func(ctx context.Context, _ *user_model.User, config Config) error {
reportConfig := config.(*ReportConfig)
return moderation_service.RemoveResolvedReports(ctx, reportConfig.Timeout)
})
}
func initExtendedTasks() {
registerDeleteInactiveUsers()
registerDeleteRepositoryArchives()
@ -240,4 +259,5 @@ func initExtendedTasks() {
registerDeleteOldSystemNotices()
registerGCLFS()
registerRebuildIssueIndexer()
registerRemoveResolvedReports()
}

View file

@ -5,7 +5,9 @@ package moderation
import (
"errors"
"time"
"forgejo.org/models/db"
"forgejo.org/models/issues"
"forgejo.org/models/moderation"
"forgejo.org/models/perm"
@ -127,3 +129,23 @@ func CanReport(ctx context.Context, doer *user.User, contentType moderation.Repo
return hasAccess, nil
}
// RemoveResolvedReports removes resolved reports
func RemoveResolvedReports(ctx context.Context, timeout time.Duration) error {
log.Trace("Doing: RemoveResolvedReports")
status := moderation.ReportStatusTypeHandled
resolvedReports, err := db.GetEngine(ctx).Table("abuse_report").Where("status = ?", status).Exist()
if err != nil {
return err
} else if resolvedReports {
_, err := db.GetEngine(ctx).Table("abuse_report").Where("status = ?", status).Delete()
if err != nil {
return err
}
return nil
}
log.Trace("Finished: RemoveResolvedReports")
return nil
}