From 18f55d156995371bfb06ca8cd91da5a922d2a937 Mon Sep 17 00:00:00 2001 From: Frédéric Guillot Date: Sat, 16 Dec 2017 18:48:17 -0800 Subject: Add scheduler to clean old sessions --- storage/session.go | 14 ++++++++++++++ storage/user_session.go | 14 ++++++++++++++ 2 files changed, 28 insertions(+) (limited to 'storage') diff --git a/storage/session.go b/storage/session.go index 17a63e2..106d618 100644 --- a/storage/session.go +++ b/storage/session.go @@ -75,3 +75,17 @@ func (s *Storage) FlushAllSessions() (err error) { return nil } + +// CleanOldSessions removes sessions older than 30 days. +func (s *Storage) CleanOldSessions() int64 { + query := `DELETE FROM sessions + WHERE id IN (SELECT id FROM sessions WHERE created_at < now() - interval '30 days')` + + result, err := s.db.Exec(query) + if err != nil { + return 0 + } + + n, _ := result.RowsAffected() + return n +} diff --git a/storage/user_session.go b/storage/user_session.go index ffb82fc..63e25e0 100644 --- a/storage/user_session.go +++ b/storage/user_session.go @@ -127,3 +127,17 @@ func (s *Storage) RemoveUserSessionByID(userID, sessionID int64) error { return nil } + +// CleanOldUserSessions removes user sessions older than 30 days. +func (s *Storage) CleanOldUserSessions() int64 { + query := `DELETE FROM user_sessions + WHERE id IN (SELECT id FROM user_sessions WHERE created_at < now() - interval '30 days')` + + result, err := s.db.Exec(query) + if err != nil { + return 0 + } + + n, _ := result.RowsAffected() + return n +} -- cgit v1.2.3