// Preload script runs in a context that has access to both Node.js and browser APIs const { contextBridge, ipcRenderer } = require('electron') // 暴露API给渲染进程 contextBridge.exposeInMainWorld('electronAPI', { // 数据库相关 checkDatabaseInitialized: () => ipcRenderer.invoke('check-database-initialized'), initializeDatabase: () => ipcRenderer.invoke('initialize-database'), // 配置服务相关接口 adminLogin: (credentials) => ipcRenderer.invoke('admin-login', credentials), systemGetConfig: () => ipcRenderer.invoke('system-get-config'), systemUpdateConfig: (config) => ipcRenderer.invoke('system-update-config', config), systemIncreaseQuestionBankVersion: () => ipcRenderer.invoke('system-increase-question-band-version'), configFetchAll: () => ipcRenderer.invoke('config-fetch-all'), configFetchById: (id) => ipcRenderer.invoke('config-fetch-by-id', id), configSave: (key, value) => ipcRenderer.invoke('config-save', { key, value }), configDelete: (id) => ipcRenderer.invoke('config-delete', id), // 字典服务相关接口 dictFetchTypes: () => ipcRenderer.invoke('dict-fetch-types'), dictFetchItemsByType: (typeCode, isActive = undefined) => ipcRenderer.invoke('dict-fetch-items-by-type', typeCode, isActive), dictCreateType: (dictType) => ipcRenderer.invoke('dict-create-type', dictType), dictUpdateType: (dictType) => ipcRenderer.invoke('dict-update-type', dictType), dictDeleteType: (typeCode) => ipcRenderer.invoke('dict-delete-type', typeCode), dictCreateItem: (dictItem) => ipcRenderer.invoke('dict-create-item', dictItem), dictUpdateItem: (dictItem) => ipcRenderer.invoke('dict-update-item', dictItem), dictDeleteItem: (id) => ipcRenderer.invoke('dict-delete-item', id), dictFetchAllItemsWithTypes: () => ipcRenderer.invoke('dict-fetch-all-items-with-types'), dictCheckParentCode: (parentCode) => ipcRenderer.invoke('dict-check-parent-code', parentCode), dictCheckChildReferences: (itemCode) => ipcRenderer.invoke('dict-check-child-references', itemCode), // 试题服务相关接口 questionCreate: (questionData) => ipcRenderer.invoke('question-create', questionData), questionFetchAll: () => ipcRenderer.invoke('question-fetch-all'), questionFetchAllWithRelations: () => ipcRenderer.invoke('question-fetch-all-with-relations'), questionUpdateDescription: (questionData) => ipcRenderer.invoke('question-update-description', questionData), questionAddChoice: (choiceData) => ipcRenderer.invoke('question-add-choice', choiceData), questionUpdateChoice: (choiceData) => ipcRenderer.invoke('question-update-choice', choiceData), questionDeleteChoice: (id) => ipcRenderer.invoke('question-delete-choice', id), questionAddFillBlank: (fillBlankData) => ipcRenderer.invoke('question-add-fill-blank', fillBlankData), questionUpdateFillBlank: (fillBlankData) => ipcRenderer.invoke('question-update-fill-blank', fillBlankData), questionDeleteFillBlank: (id) => ipcRenderer.invoke('question-delete-fill-blank', id), questionGetQuestionWithChoices: (questionId) => ipcRenderer.invoke('question-get-question-with-choices', questionId), questionGetQuestionWithFillBlanks: (questionId) => ipcRenderer.invoke('question-get-question-with-fill-blanks', questionId), questionRemove: (questionId) => ipcRenderer.invoke('question-remove', questionId), questionGetStatistics: () => ipcRenderer.invoke('question-get-statistics'), questionGetQuestionById: (questionId) => ipcRenderer.invoke('question-get-question-by-id', questionId), // 保留原有的ipcRenderer接口,确保兼容性 ipcRenderer: { invoke: (channel, data) => ipcRenderer.invoke(channel, data) } }) // 也保留原来的electron对象,确保现有功能正常 contextBridge.exposeInMainWorld('electron', { ipcRenderer: { invoke: (channel, data) => ipcRenderer.invoke(channel, data) } })