- offer to create tag when none is found while adding a link from cli - fix tag display in search
89 lines
2.2 KiB
JavaScript
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}`);
|
|
}
|
|
};
|