Fundamental_Analysis/frontend/src/hooks/useConfig.ts
Lv, Qi a59b994a92 WIP: Commit all pending changes across services, frontend, and docs
- Sync updates for provider services (AlphaVantage, Finnhub, YFinance, Tushare)
- Update Frontend components and pages for recent config changes
- Update API Gateway and Registry
- Include design docs and tasks status
2025-11-27 02:45:56 +08:00

106 lines
2.7 KiB
TypeScript

import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
import { LlmProvidersConfig, DataSourcesConfig, AnalysisTemplateSets, TestConfigRequest, TestLlmConfigRequest } from '../types/config';
import { client } from '../api/client';
// --- Hooks ---
export function useLlmProviders() {
return useQuery({
queryKey: ['llm-providers'],
queryFn: async () => {
return await client.get_llm_providers_config();
}
});
}
export function useUpdateLlmProviders() {
const queryClient = useQueryClient();
return useMutation({
mutationFn: async (config: LlmProvidersConfig) => {
return await client.update_llm_providers_config(config);
},
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ['llm-providers'] });
}
});
}
export function useDataSources() {
return useQuery({
queryKey: ['data-sources'],
queryFn: async () => {
return await client.get_data_sources_config();
}
});
}
export function useUpdateDataSources() {
const queryClient = useQueryClient();
return useMutation({
mutationFn: async (config: DataSourcesConfig) => {
return await client.update_data_sources_config(config);
},
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ['data-sources'] });
}
});
}
export function useRegisteredProviders() {
return useQuery({
queryKey: ['registered-providers'],
queryFn: async () => {
return await client.get_registered_providers();
}
});
}
export function useAnalysisTemplates() {
return useQuery({
queryKey: ['analysis-templates'],
queryFn: async () => {
return await client.get_analysis_template_sets();
}
});
}
export function useUpdateAnalysisTemplates() {
const queryClient = useQueryClient();
return useMutation({
mutationFn: async (config: AnalysisTemplateSets) => {
return await client.update_analysis_template_sets(config);
},
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ['analysis-templates'] });
}
});
}
export function useDiscoverModels() {
const queryClient = useQueryClient();
return useMutation({
mutationFn: async (providerId: string) => {
return await client.discover_models({ params: { provider_id: providerId } });
},
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ['llm-providers'] });
}
});
}
export function useTestDataSource() {
return useMutation({
mutationFn: async (config: TestConfigRequest) => {
return await client.test_data_source_config(config);
}
});
}
export function useTestLlmConfig() {
return useMutation({
mutationFn: async (config: TestLlmConfigRequest) => {
return await client.test_llm_config(config);
}
});
}