31 lines
1.4 KiB
SQL
31 lines
1.4 KiB
SQL
-- =========================================================
|
||
-- Table principale des playlists
|
||
-- =========================================================
|
||
CREATE TABLE IF NOT EXISTS playlists (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
name TEXT UNIQUE NOT NULL,
|
||
description TEXT,
|
||
type TEXT CHECK (type IN ('manual', 'dynamic')) NOT NULL DEFAULT 'manual',
|
||
rules_json TEXT, -- JSON décrivant les règles pour les playlists dynamiques
|
||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||
);
|
||
|
||
-- =========================================================
|
||
-- Table d’association vidéos ↔ playlists (manuelles uniquement)
|
||
-- =========================================================
|
||
CREATE TABLE IF NOT EXISTS video_playlists (
|
||
video_file_name TEXT NOT NULL,
|
||
playlist_id INTEGER NOT NULL,
|
||
position INTEGER DEFAULT 0, -- ordre dans la playlist
|
||
PRIMARY KEY (video_file_name, playlist_id),
|
||
FOREIGN KEY (video_file_name) REFERENCES videos(file_name) ON DELETE CASCADE,
|
||
FOREIGN KEY (playlist_id) REFERENCES playlists(id) ON DELETE CASCADE
|
||
);
|
||
|
||
-- =========================================================
|
||
-- Index pour accélérer les recherches
|
||
-- =========================================================
|
||
CREATE INDEX IF NOT EXISTS idx_playlist_type ON playlists(type);
|
||
CREATE INDEX IF NOT EXISTS idx_video_playlists_playlist ON video_playlists(playlist_id);
|