import inquirer from 'inquirer'; import { loadConfig } from '../config.js'; import { initDirectusClient, getDirectusClient, searchItems, createItem, updateItem } from '../directus/client.js'; export const addEpisodeToShow = async () => { const config = await loadConfig(); initDirectusClient(config); const directus = getDirectusClient(); const showResults = await inquirer.prompt({ name: 'query', message: 'Search for a show:' }); const matches = await searchItems('shows', showResults.query); if (!matches.length) { console.warn('⚠️ No matching shows found.'); return; } const { showId } = await inquirer.prompt({ type: 'list', name: 'showId', message: 'Select a show:', choices: matches.map((s) => ({ name: s.title || s.name || s.id, value: s.id })) }); const { season_number, episode_number, plays } = await inquirer.prompt([ { name: 'season_number', message: 'Season number:', validate: (val) => !isNaN(val) }, { name: 'episode_number', message: 'Episode number:', validate: (val) => !isNaN(val) }, { name: 'plays', message: 'Play count:', default: 0, validate: (val) => !isNaN(val) } ]); const existing = await searchItems('episodes', `${season_number} ${episode_number}`); const match = existing.find( (e) => Number(e.season_number) === Number(season_number) && Number(e.episode_number) === Number(episode_number) && e.show === showId ); if (match) { const { update } = await inquirer.prompt({ type: 'confirm', name: 'update', message: `Episode exists. Update play count from ${match.plays ?? 0} to ${plays}?`, default: true }); if (update) { await updateItem('episodes', match.id, { plays }); console.log(`✅ Updated episode: S${season_number}E${episode_number}`); } else { console.warn('⚠️ Skipped update.'); } } else { await createItem('episodes', { season_number: Number(season_number), episode_number: Number(episode_number), plays: Number(plays), show: showId }); console.log(`📺 Created episode S${season_number}E${episode_number}`); } };