/** * Session IPC Handlers * 处理会话的 CRUD 操作 */ import { ipcMain, IpcMainInvokeEvent } from 'electron' import type { DatabaseService } from '../services/database-service' import type { SessionUpdateRequest } from '../../shared/types/session.types' // IPC channel names export const SESSION_CHANNELS = { CREATE: 'session:create', GET_ALL: 'session:getAll', GET_BY_ID: 'session:getById', UPDATE: 'session:update', DELETE: 'session:delete', } as const export interface SessionIPCOptions { dbService: DatabaseService } export function registerSessionIPCHandlers(options: SessionIPCOptions): void { const { dbService } = options // Create session ipcMain.handle(SESSION_CHANNELS.CREATE, async (_event: IpcMainInvokeEvent, session) => { try { const result = dbService.createSession(session) return { success: true, session: result } } catch (error: unknown) { return { success: false, error: error instanceof Error ? error.message : String(error) } } }) // Get all sessions ipcMain.handle(SESSION_CHANNELS.GET_ALL, async () => { try { const sessions = dbService.getAllSessions() return { success: true, sessions } } catch (error: unknown) { return { success: false, error: error instanceof Error ? error.message : String(error) } } }) // Get session by ID ipcMain.handle(SESSION_CHANNELS.GET_BY_ID, async (_event: IpcMainInvokeEvent, id: string) => { try { const session = dbService.getSessionById(id) return { success: true, session } } catch (error: unknown) { return { success: false, error: error instanceof Error ? error.message : String(error) } } }) // Update session ipcMain.handle(SESSION_CHANNELS.UPDATE, async (_event: IpcMainInvokeEvent, id: string, updates: SessionUpdateRequest) => { try { const result = dbService.updateSession(id, updates) return { success: true, session: result } } catch (error: unknown) { return { success: false, error: error instanceof Error ? error.message : String(error) } } }) // Delete session ipcMain.handle(SESSION_CHANNELS.DELETE, async (_event: IpcMainInvokeEvent, id: string) => { try { dbService.deleteSession(id) return { success: true } } catch (error: unknown) { return { success: false, error: error instanceof Error ? error.message : String(error) } } }) }