]> source.dussan.org Git - gitea.git/commitdiff
New cron task: delete old system notices (#19219)
authorPilou <pierre-louis@libregerbil.fr>
Mon, 28 Mar 2022 12:54:59 +0000 (14:54 +0200)
committerGitHub <noreply@github.com>
Mon, 28 Mar 2022 12:54:59 +0000 (13:54 +0100)
Add a new cron task which deletes the old system notices.

custom/conf/app.example.ini
docs/content/doc/advanced/config-cheat-sheet.en-us.md
models/admin/notice.go
options/locale/locale_en-US.ini
services/cron/tasks_extended.go

index 1b59e90e4e5f323b9ae6e3fa8c81761b3fed3d07..8c6643b9bcd0f2caf31b69b637f001a60e045c53 100644 (file)
@@ -2018,6 +2018,19 @@ PATH =
 ;SCHEDULE = @every 168h
 ;HTTP_ENDPOINT = https://dl.gitea.io/gitea/version.json
 
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Delete all old system notices from database
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;[cron.delete_old_system_notices]
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;ENABLED = false
+;RUN_AT_START = false
+;NO_SUCCESS_NOTICE = false
+;SCHEDULE = @every 168h
+;OLDER_THAN = 8760h
+
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Git Operation timeout in seconds
index d1d69a231022c92871a9828cbf3440ba59e5f619..d9018f982a2ecb32a82cd4b32e54052462632b36 100644 (file)
@@ -921,6 +921,13 @@ Default templates for project boards:
 - `SCHEDULE`: **@every 168h**: Cron syntax for scheduling a work, e.g. `@every 168h`.
 - `HTTP_ENDPOINT`: **https://dl.gitea.io/gitea/version.json**: the endpoint that Gitea will check for newer versions
 
+#### Cron -  Delete all old system notices from database ('cron.delete_old_system_notices')
+- `ENABLED`: **false**: Enable service.
+- `RUN_AT_START`: **false**: Run tasks at start up time (if ENABLED).
+- `NO_SUCCESS_NOTICE`: **false**: Set to true to switch off success notices.
+- `SCHEDULE`: **@every 168h**: Cron syntax to set how often to check.
+- `OLDER_THAN`: **@every 8760h**: any system notice older than this expression will be deleted from database.
+
 ## Git (`git`)
 
 - `PATH`: **""**: The path of Git executable. If empty, Gitea searches through the PATH environment.
index daf095f680f43034d42436b99c4ff0e4a7f3fb4d..77277e4b2d8739656e233d6febc44977e2fcd9ab 100644 (file)
@@ -7,6 +7,7 @@ package admin
 import (
        "context"
        "fmt"
+       "time"
 
        "code.gitea.io/gitea/models/db"
        "code.gitea.io/gitea/modules/log"
@@ -133,3 +134,13 @@ func DeleteNoticesByIDs(ids []int64) error {
                Delete(new(Notice))
        return err
 }
+
+// DeleteOldSystemNotices deletes all old system notices from database.
+func DeleteOldSystemNotices(olderThan time.Duration) (err error) {
+       if olderThan <= 0 {
+               return nil
+       }
+
+       _, err = db.GetEngine(db.DefaultContext).Where("created_unix < ?", time.Now().Add(-olderThan).Unix()).Delete(&Notice{})
+       return
+}
index b371c047e3629293b406c4955fe3bac916e1e379..5008cd2bab45c6a771a2ce2bbdb74a946608b747 100644 (file)
@@ -2463,6 +2463,7 @@ dashboard.gc_times = GC Times
 dashboard.delete_old_actions = Delete all old actions from database
 dashboard.delete_old_actions.started = Delete all old actions from database started.
 dashboard.update_checker = Update checker
+dashboard.delete_old_system_notices = Delete all old system notices from database
 
 users.user_manage_panel = User Account Management
 users.new_account = Create User Account
index ded819a71e917746315858454dc4e21083d85db0..2d1bf532342b4fe6375b288757e7e4c420433685 100644 (file)
@@ -9,6 +9,7 @@ import (
        "time"
 
        "code.gitea.io/gitea/models"
+       "code.gitea.io/gitea/models/admin"
        asymkey_model "code.gitea.io/gitea/models/asymkey"
        user_model "code.gitea.io/gitea/models/user"
        "code.gitea.io/gitea/modules/setting"
@@ -154,6 +155,20 @@ func registerUpdateGiteaChecker() {
        })
 }
 
+func registerDeleteOldSystemNotices() {
+       RegisterTaskFatal("delete_old_system_notices", &OlderThanConfig{
+               BaseConfig: BaseConfig{
+                       Enabled:    false,
+                       RunAtStart: false,
+                       Schedule:   "@every 168h",
+               },
+               OlderThan: 365 * 24 * time.Hour,
+       }, func(ctx context.Context, _ *user_model.User, config Config) error {
+               olderThanConfig := config.(*OlderThanConfig)
+               return admin.DeleteOldSystemNotices(olderThanConfig.OlderThan)
+       })
+}
+
 func initExtendedTasks() {
        registerDeleteInactiveUsers()
        registerDeleteRepositoryArchives()
@@ -166,4 +181,5 @@ func initExtendedTasks() {
        registerRemoveRandomAvatars()
        registerDeleteOldActions()
        registerUpdateGiteaChecker()
+       registerDeleteOldSystemNotices()
 }