feat(phase4): list/set/zset editors, CLI, slow log, DB selector

- ListEditor: pagination, push, edit, remove elements
- SetEditor: filter, add, remove members
- ZsetEditor: filter, add with score, remove members
- CliView: interactive terminal with command history
- SlowLogView: slow log table with time/duration/command
- DbSelector: dropdown to switch Redis databases (0-15)
- StatusBar integrated with DB selector
- MainArea: added CLI and Slow Log tabs
- KeyDetail: dispatch to List/Set/Zset editors
- RedisService: list/set/zset/slowlog/memory operations
- Preload: all new IPC channels typed
This commit is contained in:
2026-07-04 18:07:33 +08:00
parent 272eb6b3af
commit ff09f5dc03
15 changed files with 1197 additions and 2 deletions
+37
View File
@@ -55,6 +55,43 @@ const electronAPI = {
selectDb: (id: string, db: number): Promise<void> =>
ipcRenderer.invoke('redis:selectDb', id, db),
dbSize: (id: string): Promise<number> => ipcRenderer.invoke('redis:dbSize', id),
// List
listRange: (id: string, key: string, start: number, stop: number): Promise<string[]> =>
ipcRenderer.invoke('redis:listRange', id, key, start, stop),
listLength: (id: string, key: string): Promise<number> =>
ipcRenderer.invoke('redis:listLength', id, key),
listPush: (id: string, key: string, values: string[]): Promise<number> =>
ipcRenderer.invoke('redis:listPush', id, key, values),
listSet: (id: string, key: string, index: number, value: string): Promise<void> =>
ipcRenderer.invoke('redis:listSet', id, key, index, value),
listRemove: (id: string, key: string, count: number, value: string): Promise<number> =>
ipcRenderer.invoke('redis:listRemove', id, key, count, value),
// Set
setMembers: (id: string, key: string): Promise<string[]> =>
ipcRenderer.invoke('redis:setMembers', id, key),
setSize: (id: string, key: string): Promise<number> =>
ipcRenderer.invoke('redis:setSize', id, key),
setAdd: (id: string, key: string, members: string[]): Promise<number> =>
ipcRenderer.invoke('redis:setAdd', id, key, members),
setRemove: (id: string, key: string, members: string[]): Promise<number> =>
ipcRenderer.invoke('redis:setRemove', id, key, members),
// Sorted set
zsetRange: (id: string, key: string, start: number, stop: number, withScores: boolean): Promise<string[]> =>
ipcRenderer.invoke('redis:zsetRange', id, key, start, stop, withScores),
zsetSize: (id: string, key: string): Promise<number> =>
ipcRenderer.invoke('redis:zsetSize', id, key),
zsetAdd: (id: string, key: string, score: number, member: string): Promise<number> =>
ipcRenderer.invoke('redis:zsetAdd', id, key, score, member),
zsetRemove: (id: string, key: string, members: string[]): Promise<number> =>
ipcRenderer.invoke('redis:zsetRemove', id, key, members),
// Slow log
slowLogGet: (id: string, count: number): Promise<any[]> =>
ipcRenderer.invoke('redis:slowLogGet', id, count),
slowLogLen: (id: string): Promise<number> =>
ipcRenderer.invoke('redis:slowLogLen', id),
// Memory
memoryUsage: (id: string, key: string): Promise<number | null> =>
ipcRenderer.invoke('redis:memoryUsage', id, key),
},
}