Skip to content

Commit 893c893

Browse files
authored
New cron task: delete old system notices (#19219)
Add a new cron task which deletes the old system notices.
1 parent 6526733 commit 893c893

File tree

5 files changed

+48
-0
lines changed

5 files changed

+48
-0
lines changed

custom/conf/app.example.ini

+13
Original file line numberDiff line numberDiff line change
@@ -2018,6 +2018,19 @@ PATH =
20182018
;SCHEDULE = @every 168h
20192019
;HTTP_ENDPOINT = https://dl.gitea.io/gitea/version.json
20202020

2021+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2022+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2023+
;; Delete all old system notices from database
2024+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2025+
;[cron.delete_old_system_notices]
2026+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2027+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2028+
;ENABLED = false
2029+
;RUN_AT_START = false
2030+
;NO_SUCCESS_NOTICE = false
2031+
;SCHEDULE = @every 168h
2032+
;OLDER_THAN = 8760h
2033+
20212034
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
20222035
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
20232036
;; Git Operation timeout in seconds

docs/content/doc/advanced/config-cheat-sheet.en-us.md

+7
Original file line numberDiff line numberDiff line change
@@ -921,6 +921,13 @@ Default templates for project boards:
921921
- `SCHEDULE`: **@every 168h**: Cron syntax for scheduling a work, e.g. `@every 168h`.
922922
- `HTTP_ENDPOINT`: **https://dl.gitea.io/gitea/version.json**: the endpoint that Gitea will check for newer versions
923923

924+
#### Cron - Delete all old system notices from database ('cron.delete_old_system_notices')
925+
- `ENABLED`: **false**: Enable service.
926+
- `RUN_AT_START`: **false**: Run tasks at start up time (if ENABLED).
927+
- `NO_SUCCESS_NOTICE`: **false**: Set to true to switch off success notices.
928+
- `SCHEDULE`: **@every 168h**: Cron syntax to set how often to check.
929+
- `OLDER_THAN`: **@every 8760h**: any system notice older than this expression will be deleted from database.
930+
924931
## Git (`git`)
925932

926933
- `PATH`: **""**: The path of Git executable. If empty, Gitea searches through the PATH environment.

models/admin/notice.go

+11
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ package admin
77
import (
88
"context"
99
"fmt"
10+
"time"
1011

1112
"code.gitea.io/gitea/models/db"
1213
"code.gitea.io/gitea/modules/log"
@@ -133,3 +134,13 @@ func DeleteNoticesByIDs(ids []int64) error {
133134
Delete(new(Notice))
134135
return err
135136
}
137+
138+
// DeleteOldSystemNotices deletes all old system notices from database.
139+
func DeleteOldSystemNotices(olderThan time.Duration) (err error) {
140+
if olderThan <= 0 {
141+
return nil
142+
}
143+
144+
_, err = db.GetEngine(db.DefaultContext).Where("created_unix < ?", time.Now().Add(-olderThan).Unix()).Delete(&Notice{})
145+
return
146+
}

options/locale/locale_en-US.ini

+1
Original file line numberDiff line numberDiff line change
@@ -2463,6 +2463,7 @@ dashboard.gc_times = GC Times
24632463
dashboard.delete_old_actions = Delete all old actions from database
24642464
dashboard.delete_old_actions.started = Delete all old actions from database started.
24652465
dashboard.update_checker = Update checker
2466+
dashboard.delete_old_system_notices = Delete all old system notices from database
24662467

24672468
users.user_manage_panel = User Account Management
24682469
users.new_account = Create User Account

services/cron/tasks_extended.go

+16
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"time"
1010

1111
"code.gitea.io/gitea/models"
12+
"code.gitea.io/gitea/models/admin"
1213
asymkey_model "code.gitea.io/gitea/models/asymkey"
1314
user_model "code.gitea.io/gitea/models/user"
1415
"code.gitea.io/gitea/modules/setting"
@@ -154,6 +155,20 @@ func registerUpdateGiteaChecker() {
154155
})
155156
}
156157

158+
func registerDeleteOldSystemNotices() {
159+
RegisterTaskFatal("delete_old_system_notices", &OlderThanConfig{
160+
BaseConfig: BaseConfig{
161+
Enabled: false,
162+
RunAtStart: false,
163+
Schedule: "@every 168h",
164+
},
165+
OlderThan: 365 * 24 * time.Hour,
166+
}, func(ctx context.Context, _ *user_model.User, config Config) error {
167+
olderThanConfig := config.(*OlderThanConfig)
168+
return admin.DeleteOldSystemNotices(olderThanConfig.OlderThan)
169+
})
170+
}
171+
157172
func initExtendedTasks() {
158173
registerDeleteInactiveUsers()
159174
registerDeleteRepositoryArchives()
@@ -166,4 +181,5 @@ func initExtendedTasks() {
166181
registerRemoveRandomAvatars()
167182
registerDeleteOldActions()
168183
registerUpdateGiteaChecker()
184+
registerDeleteOldSystemNotices()
169185
}

0 commit comments

Comments
 (0)