import path from 'path';
import type { FileSystem } from '../utils/file-operations';
import { validateFileExists, removeFile } from '../utils/file-operations';
import { logger } from '../utils/logger';
import { logError, logSuccess, logDomainNotFound } from '../utils/logging';
import { buildDomainDirectoryPath } from '../utils/paths';

export const deleteDomain = async (
  domainName: string,
  force: boolean = false,
  fileSystem: FileSystem = require('fs-extra'),
  log = logger
): Promise<void> => {
  const domainPath = buildDomainDirectoryPath(domainName);

  try {
    // Check if domain exists
    const domainExists = await validateFileExists(fileSystem, domainPath);
    if (!domainExists) {
      logDomainNotFound(log, domainName, domainPath);
      return;
    }

    // Delete domain directory
    await removeFile(fileSystem, domainPath);
    logSuccess(log, `Domain "${domainName}" deleted successfully!`);
  } catch (error) {
    logError(log, `Error deleting domain "${domainName}": ${error instanceof Error ? error.message : 'Unknown error'}`);
  }
}; 