veza/veza-backend-api/internal/jobs/cleanup_sessions.go
2025-12-03 20:29:37 +01:00

47 lines
1.5 KiB
Go

package jobs
import (
"context"
"time"
"veza-backend-api/internal/database"
"veza-backend-api/internal/services"
"go.uber.org/zap"
)
// CleanupExpiredSessions supprime les sessions expirées
// T0208: Supprime les sessions avec expires_at < NOW()
func CleanupExpiredSessions(db *database.Database, logger *zap.Logger) error {
// Créer SessionService pour utiliser la méthode existante
sessionService := services.NewSessionService(db, logger)
// Cleanup expired sessions
if err := sessionService.CleanupExpiredSessions(context.Background()); err != nil {
logger.Error("Failed to cleanup expired sessions", zap.Error(err))
return err
}
// Note: The service already logs the number of cleaned sessions
return nil
}
// ScheduleSessionCleanupJob programme le job de nettoyage des sessions pour s'exécuter quotidiennement
// T0208: Lance une goroutine qui exécute le nettoyage toutes les 24 heures
func ScheduleSessionCleanupJob(db *database.Database, logger *zap.Logger) {
ticker := time.NewTicker(24 * time.Hour)
go func() {
// Exécuter immédiatement au démarrage
if err := CleanupExpiredSessions(db, logger); err != nil {
logger.Error("Initial sessions cleanup job failed", zap.Error(err))
}
// Puis exécuter toutes les 24 heures
for range ticker.C {
if err := CleanupExpiredSessions(db, logger); err != nil {
logger.Error("Scheduled sessions cleanup job failed", zap.Error(err))
}
}
}()
logger.Info("Sessions cleanup job scheduled to run daily")
}