40 lines
828 B
Go
40 lines
828 B
Go
package main
|
|
|
|
import (
|
|
"github.com/animenotifier/arn"
|
|
"github.com/akyoto/color"
|
|
)
|
|
|
|
const maxNotificationsPerUser = 30
|
|
|
|
func main() {
|
|
color.Yellow("Deleting old notifications")
|
|
|
|
defer color.Green("Finished")
|
|
defer arn.Node.Close()
|
|
|
|
count := 0
|
|
|
|
for user := range arn.StreamUsers() {
|
|
notifications := user.Notifications()
|
|
notificationCount := len(notifications.Items)
|
|
|
|
if notificationCount > maxNotificationsPerUser {
|
|
cut := len(notifications.Items) - maxNotificationsPerUser
|
|
deletedItems := notifications.Items[:cut]
|
|
newItems := notifications.Items[cut:]
|
|
|
|
for _, notificationID := range deletedItems {
|
|
arn.DB.Delete("Notification", notificationID)
|
|
}
|
|
|
|
notifications.Items = newItems
|
|
notifications.Save()
|
|
|
|
count += len(deletedItems)
|
|
}
|
|
}
|
|
|
|
color.Green("Deleted %d notifications", count)
|
|
}
|