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:
parent
7a124fb0ce
commit
7d885406cf
2 changed files with 42 additions and 0 deletions
|
@ -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()
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue