bdd5ab30fd
- Create CDN manager with multi-provider support (Bunny, Cloudflare, S3, Backblaze, Wasabi) - Implement automatic CDN upload and failover system - Add multi-quality video support (360p-2160p) - Build quality selector UI with auto-detection - Track CDN bandwidth usage for cost monitoring - Implement cache purging API - Add background CDN upload worker script - Create comprehensive CDN documentation Features: - Multi-CDN support with priority-based failover - BunnyCDN, Cloudflare R2, AWS S3, Backblaze B2, Wasabi integration - Multi-quality delivery (adaptive quality selection) - Auto quality based on connection speed - User preference persistence - Bandwidth tracking per provider - Cache purge API - Cost optimization strategies - Production-ready with error handling
68 lines
2.7 KiB
SQL
68 lines
2.7 KiB
SQL
-- Migration: Add CDN support and multi-quality storage
|
|
|
|
-- CDN provider configurations
|
|
CREATE TABLE IF NOT EXISTS db_cdn_providers (
|
|
provider_id INT AUTO_INCREMENT PRIMARY KEY,
|
|
provider_name VARCHAR(50) NOT NULL,
|
|
provider_type ENUM('bunny', 'cloudflare', 's3', 'backblaze', 'wasabi', 'custom') NOT NULL,
|
|
api_key VARCHAR(255),
|
|
api_secret VARCHAR(255),
|
|
storage_zone VARCHAR(100),
|
|
pull_zone VARCHAR(100),
|
|
cdn_hostname VARCHAR(255),
|
|
region VARCHAR(50),
|
|
is_active TINYINT DEFAULT 1,
|
|
priority INT DEFAULT 0,
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
INDEX idx_active_priority (is_active, priority)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
-- Video quality variants (for adaptive streaming)
|
|
CREATE TABLE IF NOT EXISTS db_video_qualities (
|
|
quality_id INT AUTO_INCREMENT PRIMARY KEY,
|
|
video_id INT NOT NULL,
|
|
quality_label VARCHAR(20) NOT NULL,
|
|
resolution VARCHAR(20),
|
|
bitrate INT,
|
|
file_path VARCHAR(512),
|
|
cdn_url VARCHAR(512),
|
|
file_size BIGINT,
|
|
codec VARCHAR(50),
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
INDEX idx_video (video_id),
|
|
FOREIGN KEY (video_id) REFERENCES db_videofiles(video_id) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
-- CDN cache status tracking
|
|
CREATE TABLE IF NOT EXISTS db_cdn_cache_status (
|
|
cache_id INT AUTO_INCREMENT PRIMARY KEY,
|
|
video_id INT NOT NULL,
|
|
provider_id INT NOT NULL,
|
|
quality_label VARCHAR(20),
|
|
cdn_url VARCHAR(512),
|
|
status ENUM('pending', 'uploading', 'ready', 'failed') DEFAULT 'pending',
|
|
upload_progress INT DEFAULT 0,
|
|
error_message TEXT,
|
|
last_checked DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
INDEX idx_video_provider (video_id, provider_id),
|
|
INDEX idx_status (status),
|
|
FOREIGN KEY (video_id) REFERENCES db_videofiles(video_id) ON DELETE CASCADE,
|
|
FOREIGN KEY (provider_id) REFERENCES db_cdn_providers(provider_id) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
-- CDN bandwidth tracking (for cost monitoring)
|
|
CREATE TABLE IF NOT EXISTS db_cdn_bandwidth_usage (
|
|
usage_id INT AUTO_INCREMENT PRIMARY KEY,
|
|
provider_id INT NOT NULL,
|
|
video_id INT,
|
|
date DATE NOT NULL,
|
|
bandwidth_mb DECIMAL(12,2) DEFAULT 0,
|
|
requests_count INT DEFAULT 0,
|
|
cost_estimate DECIMAL(10,4) DEFAULT 0,
|
|
UNIQUE KEY unique_provider_video_date (provider_id, video_id, date),
|
|
INDEX idx_provider_date (provider_id, date),
|
|
FOREIGN KEY (provider_id) REFERENCES db_cdn_providers(provider_id) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|