feat: implement PHP and MySQL version management services with automated download and cataloging capabilities
This commit is contained in:
+37
-1
@@ -1,9 +1,10 @@
|
||||
import { ipcMain, app } from 'electron'
|
||||
import { ipcMain, app, dialog } from 'electron'
|
||||
import { processManager } from '../services/ProcessManager'
|
||||
import { configService } from '../services/ConfigService'
|
||||
import { downloadService } from '../services/DownloadService'
|
||||
import { projectService } from '../services/ProjectService'
|
||||
import { phpManagerService } from '../services/PhpManagerService'
|
||||
import { mySqlManagerService } from '../services/MySqlManagerService'
|
||||
import path from 'path'
|
||||
|
||||
export function registerIpcHandlers(): void {
|
||||
@@ -83,6 +84,41 @@ export function registerIpcHandlers(): void {
|
||||
}
|
||||
})
|
||||
|
||||
// MySQL Versions
|
||||
ipcMain.handle('mysql:versions', async () => {
|
||||
return await mySqlManagerService.getVersions()
|
||||
})
|
||||
|
||||
ipcMain.handle('mysql:download', async (event, id: string) => {
|
||||
const versions = await mySqlManagerService.getVersions()
|
||||
const version = versions.find(v => v.id === id)
|
||||
if (!version) return { success: false, message: 'Geçersiz MySQL sürümü.' }
|
||||
|
||||
try {
|
||||
mySqlManagerService.updateProgress(id, 0, 'downloading')
|
||||
event.sender.send('mysql:progress', { id, progress: 0 })
|
||||
|
||||
await downloadService.downloadAndExtract(version.url, id, (p) => {
|
||||
mySqlManagerService.updateProgress(id, p)
|
||||
event.sender.send('mysql:progress', { id, progress: p })
|
||||
})
|
||||
|
||||
mySqlManagerService.updateProgress(id, 100, 'installed')
|
||||
return { success: true, message: 'MySQL indirme tamamlandı.' }
|
||||
} catch (error: any) {
|
||||
mySqlManagerService.updateProgress(id, 0, 'available')
|
||||
return { success: false, message: `MySQL hatası: ${error.message}` }
|
||||
}
|
||||
})
|
||||
|
||||
ipcMain.handle('dialog:select-directory', async () => {
|
||||
const result = await dialog.showOpenDialog({
|
||||
properties: ['openDirectory']
|
||||
})
|
||||
if (result.canceled) return null
|
||||
return result.filePaths[0]
|
||||
})
|
||||
|
||||
ipcMain.handle('binaries:download', async (_event, { name, url }) => {
|
||||
return downloadService.downloadAndExtract(url, name, (p) => {
|
||||
// TODO: Emit progress to renderer via webContents.send
|
||||
|
||||
Reference in New Issue
Block a user