// src/main/ipc/dictionary-handlers.ts import { ipcMain } from 'electron' import { IPC_CHANNELS } from '@d3ro/core/ipc-channels' import { ipcSuccess, ipcError, ErrorCode } from '@d3ro/core/errors' import { getDictionaryService } from '../services/DictionaryService' import type { DictionaryQueryParams, DictionaryAddParams, DictionaryUpdateParams, DictionaryDeleteParams, DictionarySearchParams } from '@d3ro/core/types' export function registerDictionaryHandlers(): void { ipcMain.handle(IPC_CHANNELS.DICTIONARY.GET_ALL, async (_event, params: DictionaryQueryParams) => { try { return ipcSuccess(getDictionaryService().list(params)) } catch { return ipcError(ErrorCode.DBQueryFailed, 'Failed to get dictionary') } }) ipcMain.handle(IPC_CHANNELS.DICTIONARY.ADD, async (_event, params: DictionaryAddParams) => { try { return ipcSuccess(getDictionaryService().add(params)) } catch { return ipcError(ErrorCode.DBWriteFailed, 'Failed to add dictionary entry') } }) ipcMain.handle(IPC_CHANNELS.DICTIONARY.UPDATE, async (_event, params: DictionaryUpdateParams) => { try { return ipcSuccess(getDictionaryService().update(params)) } catch { return ipcError(ErrorCode.DBWriteFailed, 'Failed to update dictionary entry') } }) ipcMain.handle(IPC_CHANNELS.DICTIONARY.DELETE, async (_event, params: DictionaryDeleteParams) => { try { getDictionaryService().delete(params.id) return ipcSuccess(undefined) } catch { return ipcError(ErrorCode.DBWriteFailed, 'Failed to delete dictionary entry') } }) ipcMain.handle(IPC_CHANNELS.DICTIONARY.SEARCH, async (_event, params: DictionarySearchParams) => { try { return ipcSuccess(getDictionaryService().search(params)) } catch { return ipcError(ErrorCode.DBQueryFailed, 'Failed to search dictionary') } }) }