load(); // Load database configuration $dbConfig = require __DIR__ . '/config/database.php'; // Set up database connection try { \App\Database\Database::setConfig($dbConfig); $pdo = \App\Database\Database::getInstance(); echo "Database connection established successfully.\n"; } catch (Exception $e) { die('Database connection failed: ' . $e->getMessage() . "\n"); } echo "Setting up Adult Video Media Source...\n"; try { // Check if adult source already exists $stmt = $pdo->prepare("SELECT id FROM sources WHERE name = 'adult' LIMIT 1"); $stmt->execute(); $existingSource = $stmt->fetch(PDO::FETCH_ASSOC); // Create adult_videos table if it doesn't exist $stmt = $pdo->query("SHOW TABLES LIKE 'adult_videos'"); if ($stmt->rowCount() == 0) { echo "Creating adult_videos table...\n"; $pdo->exec(" CREATE TABLE adult_videos ( id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, overview TEXT, poster_url VARCHAR(500), backdrop_url VARCHAR(500), rating DECIMAL(3,1), runtime_minutes INT, release_date DATE, director VARCHAR(255), writer VARCHAR(255), cast TEXT, genre VARCHAR(255), metadata JSON, watched BOOLEAN DEFAULT FALSE, watch_count INT DEFAULT 0, is_favorite BOOLEAN DEFAULT FALSE, source_id BIGINT UNSIGNED NOT NULL, external_id VARCHAR(255), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, FOREIGN KEY (source_id) REFERENCES sources(id) ON DELETE CASCADE, INDEX idx_source_external (source_id, external_id), INDEX idx_title (title) ) "); echo "✓ Created adult_videos table\n"; } else { echo "✓ adult_videos table already exists\n"; } // Check for XBVR sources and migrate their data $stmt = $pdo->prepare("SELECT id, display_name FROM sources WHERE name = 'xbvr' AND is_active = 1"); $stmt->execute(); $xbvrSources = $stmt->fetchAll(PDO::FETCH_ASSOC); if (!empty($xbvrSources)) { echo "\nFound XBVR sources:\n"; foreach ($xbvrSources as $xbvrSource) { echo "- {$xbvrSource['display_name']} (ID: {$xbvrSource['id']})\n"; // Count movies to migrate $countStmt = $pdo->prepare("SELECT COUNT(*) as count FROM movies WHERE source_id = ?"); $countStmt->execute([$xbvrSource['id']]); $count = $countStmt->fetch(PDO::FETCH_ASSOC)['count']; if ($count > 0) { echo " Migrating {$count} movies...\n"; // Migrate XBVR movies to adult source $migrateStmt = $pdo->prepare(" UPDATE movies SET source_id = (SELECT id FROM sources WHERE name = 'adult' LIMIT 1), updated_at = NOW() WHERE source_id = ? "); $migrateStmt->execute([$xbvrSource['id']]); echo " ✓ Migrated {$count} XBVR movies to adult source\n"; } else { echo " No movies to migrate\n"; } } } else { echo "\nNo active XBVR sources found\n"; } // Check for Stash sources and migrate their data $stmt = $pdo->prepare("SELECT id, display_name FROM sources WHERE name = 'stash' AND is_active = 1"); $stmt->execute(); $stashSources = $stmt->fetchAll(PDO::FETCH_ASSOC); if (!empty($stashSources)) { echo "\nFound Stash sources:\n"; foreach ($stashSources as $stashSource) { echo "- {$stashSource['display_name']} (ID: {$stashSource['id']})\n"; // Count movies to migrate $countStmt = $pdo->prepare("SELECT COUNT(*) as count FROM movies WHERE source_id = ?"); $countStmt->execute([$stashSource['id']]); $count = $countStmt->fetch(PDO::FETCH_ASSOC)['count']; if ($count > 0) { echo " Migrating {$count} movies...\n"; // Migrate Stash movies to adult source $migrateStmt = $pdo->prepare(" UPDATE movies SET source_id = (SELECT id FROM sources WHERE name = 'adult' LIMIT 1), updated_at = NOW() WHERE source_id = ? "); $migrateStmt->execute([$stashSource['id']]); echo " ✓ Migrated {$count} Stash movies to adult source\n"; } else { echo " No movies to migrate\n"; } } } else { echo "\nNo active Stash sources found\n"; } // Show final adult source stats $adultSourceId = $pdo->query("SELECT id FROM sources WHERE name = 'adult' LIMIT 1")->fetch(PDO::FETCH_ASSOC)['id']; $countStmt = $pdo->prepare("SELECT COUNT(*) as count FROM movies WHERE source_id = ?"); $countStmt->execute([$adultSourceId]); $adultCount = $countStmt->fetch(PDO::FETCH_ASSOC)['count']; echo "\n✅ Adult Video Media Source Setup Complete!\n"; echo "Adult source now contains {$adultCount} videos\n"; echo "\nYou can now sync adult content through the Admin Dashboard!\n"; } catch (Exception $e) { echo "Error: " . $e->getMessage() . "\n"; exit(1); }