feat: implement IPC handlers for service management and binary downloads
This commit is contained in:
@@ -141,7 +141,8 @@ export function registerIpcHandlers(): void {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const mysqlPort = mysqlId ? (settings.mysqlPorts?.[mysqlId] || '3306') : settings.mysqlPort
|
const mysqlPort = mysqlId ? (settings.mysqlPorts?.[mysqlId] || '3306') : settings.mysqlPort
|
||||||
const logFile = path.join(app.getPath('userData'), 'logs', `${serviceName}_error.log`)
|
const sanitizedServiceName = serviceName.replace(/:/g, '_')
|
||||||
|
const logFile = path.join(app.getPath('userData'), 'logs', `${sanitizedServiceName}_error.log`)
|
||||||
|
|
||||||
const configPath = await configService.generateConfig('my.ini.template', `my_${mysqlId || 'default'}.ini`, {
|
const configPath = await configService.generateConfig('my.ini.template', `my_${mysqlId || 'default'}.ini`, {
|
||||||
PORT: mysqlPort,
|
PORT: mysqlPort,
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ export class MySqlManagerService {
|
|||||||
const catalog = JSON.parse(rawData)
|
const catalog = JSON.parse(rawData)
|
||||||
const releases = catalog.mysql_release_catalog.releases as any[]
|
const releases = catalog.mysql_release_catalog.releases as any[]
|
||||||
|
|
||||||
const dynamicVersions: MySqlVersion[] = releases.map(v => {
|
const dynamicVersions: MySqlVersion[] = releases.map((v, index) => {
|
||||||
const version = v.version
|
const version = v.version
|
||||||
const cycle = v.series
|
const cycle = v.series
|
||||||
|
|
||||||
@@ -58,7 +58,8 @@ export class MySqlManagerService {
|
|||||||
const url = `https://cdn.mysql.com/archives/mysql-${majorMinor}/mysql-${version}-winx64.zip`
|
const url = `https://cdn.mysql.com/archives/mysql-${majorMinor}/mysql-${version}-winx64.zip`
|
||||||
|
|
||||||
const settings = configService.getSettings()
|
const settings = configService.getSettings()
|
||||||
const customPort = settings.mysqlPorts?.[`mysql-${version}`] || '3306'
|
const defaultPort = (3306 + index).toString()
|
||||||
|
const customPort = settings.mysqlPorts?.[`mysql-${version}`] || defaultPort
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: `mysql-${version}`,
|
id: `mysql-${version}`,
|
||||||
|
|||||||
@@ -622,7 +622,8 @@ function App(): JSX.Element {
|
|||||||
{v.status === 'installed' && (
|
{v.status === 'installed' && (
|
||||||
<TextField
|
<TextField
|
||||||
label="Port"
|
label="Port"
|
||||||
value={settings.mysqlPorts?.[v.id] || '3306'}
|
value={settings.mysqlPorts?.[v.id] || ''}
|
||||||
|
placeholder={v.port}
|
||||||
onChange={(e) => {
|
onChange={(e) => {
|
||||||
const newPorts = { ...(settings.mysqlPorts || {}), [v.id]: e.target.value }
|
const newPorts = { ...(settings.mysqlPorts || {}), [v.id]: e.target.value }
|
||||||
setSettings({ ...settings, mysqlPorts: newPorts })
|
setSettings({ ...settings, mysqlPorts: newPorts })
|
||||||
@@ -825,7 +826,7 @@ function App(): JSX.Element {
|
|||||||
{getStatusChip(status[`mysql:${v.version}`] || 'stopped')}
|
{getStatusChip(status[`mysql:${v.version}`] || 'stopped')}
|
||||||
</Box>
|
</Box>
|
||||||
<Typography variant="h6" sx={{ fontWeight: 'bold' }}>MySQL {v.version}</Typography>
|
<Typography variant="h6" sx={{ fontWeight: 'bold' }}>MySQL {v.version}</Typography>
|
||||||
<Typography variant="body2" color="text.secondary" sx={{ mb: 2 }}>Port: {settings.mysqlPorts?.[v.id] || '3306'}</Typography>
|
<Typography variant="body2" color="text.secondary" sx={{ mb: 2 }}>Port: {settings.mysqlPorts?.[v.id] || v.port}</Typography>
|
||||||
<Box sx={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between' }}>
|
<Box sx={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between' }}>
|
||||||
<IconButton onClick={() => handleOpenLogs(`mysql:${v.version}`)} size="small" sx={{ bgcolor: 'rgba(255,255,255,0.05)' }}>
|
<IconButton onClick={() => handleOpenLogs(`mysql:${v.version}`)} size="small" sx={{ bgcolor: 'rgba(255,255,255,0.05)' }}>
|
||||||
<TerminalIcon fontSize="small" />
|
<TerminalIcon fontSize="small" />
|
||||||
|
|||||||
Reference in New Issue
Block a user