P1: - utils/storage.ts、theme.ts、validate.ts + index 统一出口 - request/store/useTheme 接入 storage;清零 confirm/alert - PipelineManager、TerminalAuditTab 拆分子模块(<700行红线) P2: - api/monitor、api/deploy 子目录化 - hooks/api 扩展:servers/pipelines/alerts/audit/sessionCommands - PipelineManager、AuditOperationsTab 接入 TanStack Query
63 lines
1.6 KiB
TypeScript
63 lines
1.6 KiB
TypeScript
// 终端会话列表 — TanStack Query // Logan.Li
|
|
|
|
import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
|
|
import { terminalSessionApi } from '@/api';
|
|
import { queryKeys } from './queryKeys';
|
|
import { unwrapList } from './unwrap';
|
|
|
|
export interface TerminalSession {
|
|
id: number;
|
|
user_id?: number;
|
|
username: string;
|
|
server_id: number;
|
|
server_name: string;
|
|
server_ip: string;
|
|
server_port: number;
|
|
client_ip: string;
|
|
status: string;
|
|
duration: number;
|
|
record_size: number;
|
|
start_time: string;
|
|
end_time?: string | null;
|
|
}
|
|
|
|
type ListParams = {
|
|
page?: number;
|
|
page_size?: number;
|
|
server_id?: number;
|
|
username?: string;
|
|
status?: string;
|
|
};
|
|
|
|
export function useTerminalSessions(params: ListParams = { page: 1, page_size: 100 }) {
|
|
return useQuery({
|
|
queryKey: queryKeys.terminalSessions(params),
|
|
queryFn: async () => {
|
|
const resp = await terminalSessionApi.list(params);
|
|
return unwrapList<TerminalSession>(resp);
|
|
},
|
|
});
|
|
}
|
|
|
|
export function useTerminalSessionMutations() {
|
|
const qc = useQueryClient();
|
|
|
|
const invalidate = () => qc.invalidateQueries({ queryKey: ['terminal-sessions'] });
|
|
|
|
const killMutation = useMutation({
|
|
mutationFn: (id: number) => terminalSessionApi.kill(id),
|
|
onSuccess: invalidate,
|
|
});
|
|
|
|
const deleteMutation = useMutation({
|
|
mutationFn: (id: number) => terminalSessionApi.delete(id),
|
|
onSuccess: invalidate,
|
|
});
|
|
|
|
const batchDeleteMutation = useMutation({
|
|
mutationFn: (ids: number[]) => terminalSessionApi.batchDelete(ids),
|
|
onSuccess: invalidate,
|
|
});
|
|
|
|
return { killMutation, deleteMutation, batchDeleteMutation, invalidate };
|
|
} |