47 lines
1.5 KiB
Go
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")
|
|
}
|