47 lines
1.1 KiB
JavaScript
47 lines
1.1 KiB
JavaScript
import inquirer from 'inquirer';
|
|
import { searchItems } from '../directus/client.js';
|
|
|
|
export const promptForMultipleRelations = async (collection, label = collection) => {
|
|
const selectedIds = new Set();
|
|
|
|
while (true) {
|
|
const { query } = await inquirer.prompt({
|
|
name: 'query',
|
|
message: `🔍 Search ${label} (or leave blank to finish):`
|
|
});
|
|
const trimmed = query.trim();
|
|
|
|
if (!trimmed) break;
|
|
|
|
const results = await searchItems(collection, trimmed);
|
|
|
|
if (!results.length) {
|
|
console.warn(`⚠️ No ${collection} found for "${query}".`);
|
|
|
|
continue;
|
|
}
|
|
|
|
const { selected } = await inquirer.prompt({
|
|
type: 'checkbox',
|
|
name: 'selected',
|
|
message: `✔ Select ${label} to add:`,
|
|
choices: results.map((item) => ({
|
|
name: item.name || item.title || item.id,
|
|
value: item.id
|
|
}))
|
|
});
|
|
|
|
selected.forEach((id) => selectedIds.add(id));
|
|
|
|
const { again } = await inquirer.prompt({
|
|
type: 'confirm',
|
|
name: 'again',
|
|
message: `Search and add more ${label}?`,
|
|
default: false
|
|
});
|
|
|
|
if (!again) break;
|
|
}
|
|
|
|
return Array.from(selectedIds);
|
|
};
|