56 lines
1.6 KiB
Go
56 lines
1.6 KiB
Go
package jobs
|
|
|
|
import (
|
|
"context"
|
|
"os"
|
|
"time"
|
|
|
|
"veza-backend-api/internal/database"
|
|
"veza-backend-api/internal/services"
|
|
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
// CleanupHLSSegments nettoie les segments HLS obsolètes
|
|
// T0338: Nettoie les segments de tracks supprimés et les segments orphelins
|
|
func CleanupHLSSegments(db *database.Database, logger *zap.Logger) error {
|
|
ctx := context.Background()
|
|
|
|
// Récupérer le répertoire de sortie HLS depuis la config ou un défaut
|
|
hlsOutputDir := os.Getenv("HLS_OUTPUT_DIR")
|
|
if hlsOutputDir == "" {
|
|
hlsOutputDir = "hls_output"
|
|
}
|
|
|
|
// Créer le service de cleanup
|
|
cleanupService := services.NewHLSCleanupService(db.GormDB, hlsOutputDir, logger)
|
|
|
|
// Exécuter le nettoyage
|
|
if err := cleanupService.CleanupAll(ctx); err != nil {
|
|
logger.Error("Failed to cleanup HLS segments", zap.Error(err))
|
|
return err
|
|
}
|
|
|
|
logger.Info("HLS segments cleanup completed successfully")
|
|
return nil
|
|
}
|
|
|
|
// ScheduleHLSCleanupJob programme le job de nettoyage HLS pour s'exécuter périodiquement
|
|
// T0338: Lance une goroutine qui exécute le nettoyage toutes les 24 heures
|
|
func ScheduleHLSCleanupJob(db *database.Database, logger *zap.Logger) {
|
|
ticker := time.NewTicker(24 * time.Hour)
|
|
go func() {
|
|
// Exécuter immédiatement au démarrage
|
|
if err := CleanupHLSSegments(db, logger); err != nil {
|
|
logger.Error("Initial HLS cleanup job failed", zap.Error(err))
|
|
}
|
|
|
|
// Puis exécuter toutes les 24 heures
|
|
for range ticker.C {
|
|
if err := CleanupHLSSegments(db, logger); err != nil {
|
|
logger.Error("Scheduled HLS cleanup job failed", zap.Error(err))
|
|
}
|
|
}
|
|
}()
|
|
logger.Info("HLS cleanup job scheduled to run daily")
|
|
}
|