61 lines
3.8 KiB
JavaScript
61 lines
3.8 KiB
JavaScript
// 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)
|
||
}
|
||
}) |