- Break entity shim chain: brokerPositionApi, brokerOperationApi now use shared/api/client directly - Remove all 43 shim re-export files (api/, hooks/, context/, components/, pages/ flat shims, routes.tsx) - Remove entire pages/broker/ dead code directory - Remove api/broker.ts after breaking the shim chain - Switch auth consumers from AuthProvider (shim) to SessionProvider (FSD) - Fix api/screener.ts imports to use @/shared/api - Update frontend hooks.md and routes.md documentation - 2840 lines removed, 71 lines added
41 lines
1.1 KiB
TypeScript
41 lines
1.1 KiB
TypeScript
import { request } from '@/shared/api/client';
|
|
import type { ScreenerResult } from '@/shared/api/responses';
|
|
|
|
export interface ScreenerQuery {
|
|
type: 'share' | 'bond';
|
|
priceMin?: number;
|
|
priceMax?: number;
|
|
volumeMin?: number;
|
|
listLevel?: number;
|
|
changePercentMin?: number;
|
|
changePercentMax?: number;
|
|
capitalizationMin?: number;
|
|
yieldMin?: number;
|
|
yieldMax?: number;
|
|
durationMin?: number;
|
|
durationMax?: number;
|
|
couponMin?: number;
|
|
couponMax?: number;
|
|
couponPercentMin?: number;
|
|
couponPercentMax?: number;
|
|
maturityBefore?: string;
|
|
maturityAfter?: string;
|
|
bondType?: string;
|
|
sortBy?: string;
|
|
sortOrder?: 'asc' | 'desc';
|
|
page?: number;
|
|
pageSize?: number;
|
|
}
|
|
|
|
export function getScreenerResults(
|
|
params: ScreenerQuery,
|
|
): Promise<{ data: ScreenerResult; meta: { cachedAt: string | null; fromCache: boolean } }> {
|
|
const query: Record<string, string> = {};
|
|
Object.entries(params).forEach(([key, value]) => {
|
|
if (value !== undefined && value !== null) {
|
|
query[key] = String(value);
|
|
}
|
|
});
|
|
return request<ScreenerResult>('/api/v1/securities/screener', query);
|
|
}
|