dkforest

A forum and chat platform (onion)
git clone https://git.dasho.dev/n0tr1v/dkforest.git
Log | Files | Refs | LICENSE

commit c9cba7374315776740f677230cc806b833a72f9e
parent b3d47a0f2e77b166ed563612be95def371896729
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Fri, 26 May 2023 08:46:16 -0700

auto cleanup more tables

Diffstat:
Mpkg/actions/actions.go | 6++++++
Mpkg/database/tableChatInbox.go | 6++++++
Mpkg/database/tableDownloads.go | 7+++++++
Mpkg/database/tableIgnoredUsers.go | 5+++++
Mpkg/database/tableNotifications.go | 6++++++
Mpkg/database/tablePmBlacklistedUsers.go | 4++++
Mpkg/database/tablePmWhitelistedUsers.go | 4++++
7 files changed, 38 insertions(+), 0 deletions(-)

diff --git a/pkg/actions/actions.go b/pkg/actions/actions.go @@ -259,6 +259,12 @@ func cleanupDatabase(db *database.DkfDB) { db.DeleteOldCaptchaRequests() db.DeleteOldAuditLogs() db.DeleteOldSecurityLogs() + db.DeleteOldIgnoredUsers() + db.DeleteOldPmBlacklistedUsers() + db.DeleteOldPmWhitelistedUsers() + db.DeleteOldChatInboxMessages() + db.DeleteOldDownloads() + db.DeleteOldSessionNotifications() logrus.Debugf("done cleaning database, took %s", time.Since(start)) } } diff --git a/pkg/database/tableChatInbox.go b/pkg/database/tableChatInbox.go @@ -22,6 +22,12 @@ type ChatInboxMessage struct { Room ChatRoom } +func (d *DkfDB) DeleteOldChatInboxMessages() { + if err := d.db.Delete(ChatInboxMessage{}, "created_at < date('now', '-90 Day')").Error; err != nil { + logrus.Error(err) + } +} + func (d *DkfDB) GetUserChatInboxMessages(userID UserID) (msgs []ChatInboxMessage, err error) { err = d.db.Order("id DESC"). Limit(50). diff --git a/pkg/database/tableDownloads.go b/pkg/database/tableDownloads.go @@ -1,6 +1,7 @@ package database import ( + "github.com/sirupsen/logrus" "time" ) @@ -13,6 +14,12 @@ type Download struct { CreatedAt time.Time } +func (d *DkfDB) DeleteOldDownloads() { + if err := d.db.Delete(Download{}, "created_at < date('now', '-90 Day')").Error; err != nil { + logrus.Error(err) + } +} + // CreateDownload ... func (d *DkfDB) CreateDownload(userID UserID, filename string) (out Download, err error) { out = Download{UserID: userID, Filename: filename} diff --git a/pkg/database/tableIgnoredUsers.go b/pkg/database/tableIgnoredUsers.go @@ -14,6 +14,11 @@ type IgnoredUser struct { IgnoredUser User } +func (d *DkfDB) DeleteOldIgnoredUsers() { + d.db.Exec(`DELETE FROM ignored_users INNER JOIN users u ON ignored_user_id = u.id WHERE u.last_seen_at < date('now', '-60 Day')`) + // d.db.Exec(`DELETE FROM ignored_users INNER JOIN users u ON user_id = u.id WHERE u.last_seen_at < date('now', '-60 Day')`) +} + func (d *DkfDB) GetIgnoredUsers(userID UserID) (out []IgnoredUser, err error) { err = d.db.Where("user_id = ?", userID).Preload("IgnoredUser").Find(&out).Error return diff --git a/pkg/database/tableNotifications.go b/pkg/database/tableNotifications.go @@ -26,6 +26,12 @@ type SessionNotification struct { User User } +func (d *DkfDB) DeleteOldSessionNotifications() { + if err := d.db.Delete(SessionNotification{}, "created_at < date('now', '-90 Day')").Error; err != nil { + logrus.Error(err) + } +} + func (d *DkfDB) GetUserNotifications(userID UserID) (msgs []Notification, err error) { err = d.db.Order("id DESC"). Limit(50). diff --git a/pkg/database/tablePmBlacklistedUsers.go b/pkg/database/tablePmBlacklistedUsers.go @@ -10,6 +10,10 @@ type PmBlacklistedUsers struct { BlacklistedUser User } +func (d *DkfDB) DeleteOldPmBlacklistedUsers() { + d.db.Exec(`DELETE FROM pm_blacklisted_users INNER JOIN users u ON blacklisted_user_id = u.id WHERE u.last_seen_at < date('now', '-90 Day')`) +} + // IsUserPmBlacklisted returns either or not toUserID blacklisted fromUserID func (d *DkfDB) IsUserPmBlacklisted(fromUserID, toUserID UserID) bool { var count int64 diff --git a/pkg/database/tablePmWhitelistedUsers.go b/pkg/database/tablePmWhitelistedUsers.go @@ -10,6 +10,10 @@ type PmWhitelistedUsers struct { WhitelistedUser User } +func (d *DkfDB) DeleteOldPmWhitelistedUsers() { + d.db.Exec(`DELETE FROM pm_whitelisted_users INNER JOIN users u ON whitelisted_user_id = u.id WHERE u.last_seen_at < date('now', '-90 Day')`) +} + func (d *DkfDB) IsUserPmWhitelisted(fromUserID, toUserID UserID) bool { var count int64 d.db.Model(&PmWhitelistedUsers{}).Where("whitelisted_user_id = ? AND user_id = ?", fromUserID, toUserID).Count(&count)