refactored: moved cleanup stuff to extra file + added db cleanup schedule

This commit is contained in:
overflowerror 2021-08-21 16:01:44 +02:00
parent 2687d439b3
commit 211f7b42a8
5 changed files with 36 additions and 4 deletions

View file

@ -6,6 +6,8 @@ import (
)
type Data interface {
Cleanup() error
CountUsers() (int64, error)
AddUser(user *models.User) error
GetUserByUsername(username string) (*models.User, error)

View file

@ -0,0 +1,11 @@
package data
import "threadule/backend/internal/data/models"
func (d *Data) Cleanup() error {
if err := d.db.Unscoped().Where("deleted_at IS NOT NULL").Delete(&models.Tweet{}).Error; err != nil {
return err
}
return nil
}

View file

@ -7,7 +7,7 @@ import (
const sessionDuration = 7 * 24 * time.Hour
func (l *Logic) scheduleTriggerAuth() {
func (l *Logic) cleanupSessions() {
err := l.ctx.Data.CleanupSessions()
if err != nil {
l.ctx.Log.Errorf("couldn't clean up sessions: %v", err)

View file

@ -0,0 +1,12 @@
package logic
func (l *Logic) scheduledCleanup() {
l.ctx.Log.Info("doing cleanup...")
l.cleanupSessions()
err := l.ctx.Data.Cleanup()
if err != nil {
l.ctx.Log.Errorf("couldn't clean up database: %v", err)
}
}

View file

@ -3,13 +3,20 @@ package logic
import "time"
func (l *Logic) startScheduler() {
ticker := time.NewTicker(time.Minute)
twitterTicker := time.NewTicker(time.Minute)
cleanupTicker := time.NewTicker(time.Hour * 24)
go func() {
for {
_ = <-ticker.C
_ = <-twitterTicker.C
l.scheduleTriggerTwitter()
l.scheduleTriggerAuth()
}
}()
go func() {
for {
_ = <-cleanupTicker.C
l.scheduledCleanup()
}
}()
}