77 lines
3.8 KiB
JavaScript
77 lines
3.8 KiB
JavaScript
const { contextBridge, ipcRenderer } = require('electron')
|
|
|
|
// 暴露安全的 API 给渲染进程
|
|
contextBridge.exposeInMainWorld('electronAPI', {
|
|
// 窗口控制
|
|
minimize: () => ipcRenderer.invoke('window:minimize'),
|
|
maximize: () => ipcRenderer.invoke('window:maximize'),
|
|
close: () => ipcRenderer.invoke('window:close'),
|
|
|
|
// 配置存储
|
|
loadConnections: () => ipcRenderer.invoke('config:load'),
|
|
saveConnections: (connections) => ipcRenderer.invoke('config:save', connections),
|
|
|
|
// 数据库操作
|
|
testConnection: (config) => ipcRenderer.invoke('db:test', config),
|
|
connect: (config) => ipcRenderer.invoke('db:connect', config),
|
|
disconnect: (id) => ipcRenderer.invoke('db:disconnect', id),
|
|
query: (id, sql) => ipcRenderer.invoke('db:query', id, sql),
|
|
getDatabases: (id) => ipcRenderer.invoke('db:getDatabases', id),
|
|
getTables: (id, database) => ipcRenderer.invoke('db:getTables', id, database),
|
|
getColumns: (id, database, table) => ipcRenderer.invoke('db:getColumns', id, database, table),
|
|
getTableData: (id, database, table, page, pageSize) =>
|
|
ipcRenderer.invoke('db:getTableData', id, database, table, page, pageSize),
|
|
updateRow: (id, database, table, primaryKey, updates) =>
|
|
ipcRenderer.invoke('db:updateRow', id, database, table, primaryKey, updates),
|
|
deleteRow: (id, database, table, primaryKey) =>
|
|
ipcRenderer.invoke('db:deleteRow', id, database, table, primaryKey),
|
|
insertRow: (id, database, table, columns, values) =>
|
|
ipcRenderer.invoke('db:insertRow', id, database, table, columns, values),
|
|
|
|
// 数据库管理
|
|
createDatabase: (id, dbName, charset, collation) =>
|
|
ipcRenderer.invoke('db:createDatabase', id, dbName, charset, collation),
|
|
dropDatabase: (id, dbName) =>
|
|
ipcRenderer.invoke('db:dropDatabase', id, dbName),
|
|
|
|
// 表管理
|
|
createTable: (id, database, tableName, columns) =>
|
|
ipcRenderer.invoke('db:createTable', id, database, tableName, columns),
|
|
dropTable: (id, database, tableName) =>
|
|
ipcRenderer.invoke('db:dropTable', id, database, tableName),
|
|
truncateTable: (id, database, tableName) =>
|
|
ipcRenderer.invoke('db:truncateTable', id, database, tableName),
|
|
renameTable: (id, database, oldName, newName) =>
|
|
ipcRenderer.invoke('db:renameTable', id, database, oldName, newName),
|
|
duplicateTable: (id, database, sourceTable, newTable, withData) =>
|
|
ipcRenderer.invoke('db:duplicateTable', id, database, sourceTable, newTable, withData),
|
|
|
|
// 列管理
|
|
addColumn: (id, database, tableName, column) =>
|
|
ipcRenderer.invoke('db:addColumn', id, database, tableName, column),
|
|
modifyColumn: (id, database, tableName, oldName, column) =>
|
|
ipcRenderer.invoke('db:modifyColumn', id, database, tableName, oldName, column),
|
|
dropColumn: (id, database, tableName, columnName) =>
|
|
ipcRenderer.invoke('db:dropColumn', id, database, tableName, columnName),
|
|
|
|
// 表设计器相关
|
|
getTableInfo: (id, database, tableName) =>
|
|
ipcRenderer.invoke('db:getTableInfo', id, database, tableName),
|
|
getIndexes: (id, database, tableName) =>
|
|
ipcRenderer.invoke('db:getIndexes', id, database, tableName),
|
|
getForeignKeys: (id, database, tableName) =>
|
|
ipcRenderer.invoke('db:getForeignKeys', id, database, tableName),
|
|
getColumnNames: (id, database, tableName) =>
|
|
ipcRenderer.invoke('db:getColumnNames', id, database, tableName),
|
|
executeMultiSQL: (id, sqls) =>
|
|
ipcRenderer.invoke('db:executeMultiSQL', id, sqls),
|
|
|
|
// 文件操作
|
|
openFile: () => ipcRenderer.invoke('file:open'),
|
|
saveFile: (filePath, content) => ipcRenderer.invoke('file:save', filePath, content),
|
|
selectFile: (extensions) => ipcRenderer.invoke('file:select', extensions),
|
|
saveDialog: (options) => ipcRenderer.invoke('file:saveDialog', options),
|
|
writeFile: (filePath, content) => ipcRenderer.invoke('file:write', filePath, content),
|
|
readFile: (filePath) => ipcRenderer.invoke('file:read', filePath)
|
|
})
|