coryd.dev/cli/lib/tasks/addEpisodeToShow.js
Cory Dransfeldt efe701f939
feat(*.liquid): apply prettier to liquid templates
- offer to create tag when none is found while adding a link from cli
- fix tag display in search
2025-06-16 14:41:29 -07:00

89 lines
2.2 KiB
JavaScript

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}`);
}
};