24 lines
1 KiB
MySQL
24 lines
1 KiB
MySQL
|
|
-- Migration: Create stream_segments table
|
||
|
|
-- Description: Table pour stocker les segments HLS générés
|
||
|
|
-- Date: 2025-01-27
|
||
|
|
|
||
|
|
CREATE TABLE IF NOT EXISTS stream_segments (
|
||
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
|
|
track_id UUID NOT NULL,
|
||
|
|
quality TEXT NOT NULL CHECK (quality IN ('low', 'medium', 'high', 'hi_res')),
|
||
|
|
segment_index INTEGER NOT NULL,
|
||
|
|
path TEXT NOT NULL,
|
||
|
|
duration FLOAT NOT NULL,
|
||
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||
|
|
|
||
|
|
-- Contraintes
|
||
|
|
CONSTRAINT stream_segments_track_id_fkey FOREIGN KEY (track_id) REFERENCES tracks(id) ON DELETE CASCADE,
|
||
|
|
CONSTRAINT stream_segments_unique UNIQUE (track_id, quality, segment_index)
|
||
|
|
);
|
||
|
|
|
||
|
|
-- Index pour performance (requêtes fréquentes)
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_stream_segments_track_id_quality ON stream_segments(track_id, quality);
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_stream_segments_track_id_quality_index ON stream_segments(track_id, quality, segment_index);
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_stream_segments_created_at ON stream_segments(created_at);
|
||
|
|
|