Files
easystream/__install/migrations/005_add_cdn_support.sql
T
Krystie bdd5ab30fd feat: Add multi-CDN integration for global video delivery
- 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
2026-03-30 17:45:23 -07:00

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;