package models

import (
	"github.com/google/uuid"
)

// TrackStatus représente le statut d'un track lors de l'upload et du traitement
type TrackStatus string

const (
	// TrackStatusUploading indique que le fichier est en cours d'upload
	TrackStatusUploading TrackStatus = "uploading"
	// TrackStatusProcessing indique que le fichier est en cours de traitement (extraction métadonnées, génération waveform, etc.)
	TrackStatusProcessing TrackStatus = "processing"
	// TrackStatusCompleted indique que le track est prêt et disponible
	TrackStatusCompleted TrackStatus = "completed"
	// TrackStatusFailed indique que l'upload ou le traitement a échoué
	TrackStatusFailed TrackStatus = "failed"
)

// StreamStatus constants
const (
	StreamStatusPending    = "pending"
	StreamStatusProcessing = "processing"
	StreamStatusReady      = "ready"
	StreamStatusError      = "error"
)

// UploadProgress représente la progression d'un upload de track
type UploadProgress struct {
	TrackID           uuid.UUID   `json:"track_id" db:"track_id"` // Changed to uuid.UUID
	Status            TrackStatus `json:"status" db:"status"`
	Progress          int         `json:"progress" db:"progress"` // 0-100
	Message           string      `json:"message,omitempty" db:"message"`
	StreamStatus      string      `json:"stream_status,omitempty" db:"stream_status"`
	StreamManifestURL string      `json:"stream_manifest_url,omitempty" db:"stream_manifest_url"`
}
