// src/main/ipc/meeting-doc-template-handlers.ts // Phase 14.5: Meeting Document Template IPC 핸들러 import { ipcMain } from 'electron' import { IPC_CHANNELS } from '@d3ro/core/ipc-channels' import { ErrorCode, ipcSuccess, ipcError, D3ROError } from '@d3ro/core/errors' import { getMeetingDocTemplateService } from '../services/MeetingDocTemplateService' import { getLogger } from '../services/LoggerService' import type { CreateMeetingDocTemplateParams, UpdateMeetingDocTemplateParams, DeleteMeetingDocTemplateParams, } from '@d3ro/core/types' const logger = getLogger('meeting-doc-template-handlers') export function registerMeetingDocTemplateHandlers(): void { const ch = IPC_CHANNELS.MEETING_DOC_TEMPLATE ipcMain.handle(ch.GET_ALL, () => { try { return ipcSuccess(getMeetingDocTemplateService().getAll()) } catch (err) { return ipcError(ErrorCode.UnknownError, err instanceof Error ? err.message : String(err)) } }) ipcMain.handle(ch.CREATE, (_event, params: CreateMeetingDocTemplateParams) => { try { const result = getMeetingDocTemplateService().create(params) return ipcSuccess(result) } catch (err) { logger.error(`meetingDocTemplate create 실패: ${err instanceof Error ? err.message : String(err)}`) return ipcError(ErrorCode.UnknownError, err instanceof Error ? err.message : String(err)) } }) ipcMain.handle(ch.UPDATE, (_event, params: UpdateMeetingDocTemplateParams) => { try { const result = getMeetingDocTemplateService().update(params) return ipcSuccess(result) } catch (err) { return ipcError( ErrorCode.MeetingDocTemplateNotFound, err instanceof Error ? err.message : String(err), ) } }) ipcMain.handle(ch.DELETE, (_event, params: DeleteMeetingDocTemplateParams) => { try { getMeetingDocTemplateService().delete(params.id) return ipcSuccess(undefined) } catch (err) { if (err instanceof D3ROError) { return ipcError(err.code, err.message) } return ipcError( ErrorCode.MeetingDocTemplateNotFound, err instanceof Error ? err.message : String(err), ) } }) logger.info('Meeting Doc Template IPC handlers registered') }