"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DeleteContactCommandHandler = void 0; const Logger_1 = require("../../Services/Logger"); class DeleteContactCommandHandler { constructor(contactRepo) { this.contactRepo = contactRepo; } async execute(cmd) { try { const existingContact = await this.contactRepo.findById(cmd.id); if (!existingContact) { throw new Error('Contact not found'); } if (cmd.hard) { // Permanent delete await this.contactRepo.delete(cmd.id); (0, Logger_1.logRequest)('Contact hard deleted', undefined, undefined, { contactId: cmd.id, contactEmail: existingContact.email, deleteType: 'hard' }); } else { // Soft delete (default) await this.contactRepo.softDelete(cmd.id); (0, Logger_1.logRequest)('Contact soft deleted', undefined, undefined, { contactId: cmd.id, contactEmail: existingContact.email, deleteType: 'soft' }); } return true; } catch (error) { if (error instanceof Error && error.message === 'Contact not found') { throw error; } throw new Error('Failed to delete contact'); } } } exports.DeleteContactCommandHandler = DeleteContactCommandHandler; //# sourceMappingURL=DeleteContactCommandHandler.js.map