hayai-db
Version:
ā” Instantly create and manage local databases with one command
52 lines (51 loc) ⢠2.07 kB
JavaScript
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);
}
});