UNPKG

hayai-db

Version:

⚔ Instantly create and manage local databases with one command

52 lines (51 loc) • 2.07 kB
import { Command } from 'commander'; import chalk from 'chalk'; import inquirer from 'inquirer'; import ora from 'ora'; import { getDockerManager } from '../../core/docker.js'; export const removeCommand = new Command('remove') .description('Remove a database instance') .argument('<name>', 'Database instance name') .option('-f, --force', 'Force removal without confirmation') .option('--keep-data', 'Keep the data volume') .action(async (name, options) => { try { const dockerManager = getDockerManager(); await dockerManager.initialize(); const instance = dockerManager.getInstance(name); if (!instance) { console.error(chalk.red(`āŒ Database instance '${name}' not found`)); process.exit(1); } // Confirmation prompt if (!options.force) { const { confirm } = await inquirer.prompt([ { type: 'confirm', name: 'confirm', message: `Are you sure you want to remove '${name}'? This action cannot be undone.`, default: false, }, ]); if (!confirm) { console.log(chalk.yellow('Operation cancelled')); return; } } const spinner = ora(`Removing database '${name}'...`).start(); // Stop the database if it's running if (instance.status === 'running') { spinner.text = `Stopping database '${name}'...`; await dockerManager.stopDatabase(name); } // Remove the database await dockerManager.removeDatabase(name); spinner.succeed(`Database '${name}' removed successfully`); console.log(chalk.green('\nāœ… Database removed!')); console.log(chalk.yellow('šŸ’” Run `hayai list` to see remaining databases')); } catch (error) { console.error(chalk.red('\nāŒ Failed to remove database:'), error instanceof Error ? error.message : error); process.exit(1); } });