This commit is contained in:
Boki 2025-06-23 22:32:51 -04:00
parent d7979500eb
commit ce5fa9da4a
25 changed files with 68 additions and 175 deletions

View file

@ -13,6 +13,7 @@
},
"dependencies": {
"@stock-bot/config": "*",
"@stock-bot/logger": "*",
"zod": "^3.22.4"
},
"devDependencies": {

View file

@ -24,6 +24,8 @@
"@stock-bot/queue": "*",
"@stock-bot/shutdown": "*",
"@stock-bot/utils": "*",
"@stock-bot/browser": "*",
"@stock-bot/proxy": "*",
"hono": "^4.0.0"
},
"devDependencies": {

View file

@ -8,7 +8,7 @@ import {
import { fetchExchanges, fetchExchangesAndSymbols, fetchSession, fetchSymbols } from './actions';
@Handler('ib')
export class IbHandler extends BaseHandler {
class IbHandler extends BaseHandler {
constructor(services: IServiceContainer) {
super(services);
}

View file

@ -9,7 +9,6 @@ import { getLogger } from '@stock-bot/logger';
// Import handlers for bundling (ensures they're included in the build)
import './ceo/ceo.handler';
import './ib/ib.handler';
import './proxy/proxy.handler';
import './qm/qm.handler';
import './webshare/webshare.handler';

View file

@ -1,7 +1,7 @@
import { BaseHandler, Handler, type IServiceContainer } from '@stock-bot/handlers';
@Handler('qm')
export class QMHandler extends BaseHandler {
class QMHandler extends BaseHandler {
constructor(services: IServiceContainer) {
super(services); // Handler name read from @Handler decorator
}

View file

@ -8,7 +8,7 @@ import {
} from '@stock-bot/handlers';
@Handler('webshare')
export class WebShareHandler extends BaseHandler {
class WebShareHandler extends BaseHandler {
constructor(services: IServiceContainer) {
super(services);
}

View file

@ -21,6 +21,8 @@
"@stock-bot/questdb": "*",
"@stock-bot/queue": "*",
"@stock-bot/shutdown": "*",
"@stock-bot/handlers": "*",
"@stock-bot/di": "*",
"hono": "^4.0.0"
},
"devDependencies": {

View file

@ -15,7 +15,7 @@ import { syncIBExchanges } from './operations/sync-ib-exchanges.operations';
import { syncQMProviderMappings } from './operations/sync-qm-provider-mappings.operations';
@Handler('exchanges')
export class ExchangesHandler extends BaseHandler {
class ExchangesHandler extends BaseHandler {
constructor(services: IServiceContainer) {
super(services);
}

View file

@ -10,7 +10,7 @@ import { syncSymbolsFromProvider } from './operations/sync-symbols-from-provider
import { getSyncStatus } from './operations/sync-status.operations';
@Handler('symbols')
export class SymbolsHandler extends BaseHandler {
class SymbolsHandler extends BaseHandler {
constructor(services: IServiceContainer) {
super(services);
}

View file

@ -17,11 +17,3 @@ export interface SyncStatus {
lastSyncCount: number;
syncErrors?: string;
}
export interface ExchangeMapping {
id: string;
code: string;
name: string;
country: string;
currency: string;
}

View file

@ -18,6 +18,8 @@
"@stock-bot/mongodb": "*",
"@stock-bot/postgres": "*",
"@stock-bot/shutdown": "*",
"@stock-bot/handlers": "*",
"@stock-bot/di": "*",
"hono": "^4.0.0"
},
"devDependencies": {

View file

@ -13,17 +13,11 @@
"@headlessui/react": "^1.7.17",
"@heroicons/react": "^2.0.18",
"@tanstack/react-table": "^8.21.3",
"@types/react-router-dom": "^5.3.3",
"@types/react-virtualized-auto-sizer": "^1.0.8",
"@types/react-window": "^1.8.8",
"clsx": "^2.1.1",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-router-dom": "^7.6.2",
"react-virtualized-auto-sizer": "^1.0.26",
"react-virtuoso": "^4.12.8",
"react-window": "^1.8.11",
"react-window-infinite-loader": "^1.0.10",
"tailwind-merge": "^3.3.1"
},
"devDependencies": {

View file

@ -8,7 +8,7 @@ export interface ApiResponse<T = unknown> {
}
// Base entity types
export interface BaseEntity {
interface BaseEntity {
id: string;
created_at: string;
updated_at: string;
@ -126,29 +126,11 @@ export interface FormErrors {
}
// Dialog props interfaces
export interface BaseDialogProps {
interface BaseDialogProps {
isOpen: boolean;
onClose: () => void;
}
export interface AddExchangeDialogProps extends BaseDialogProps {
onCreateExchange: (request: CreateExchangeRequest) => Promise<void>;
}
export interface AddProviderMappingDialogProps extends BaseDialogProps {
exchangeId: string;
exchangeName: string;
onCreateMapping: (
request: CreateProviderMappingRequest
) => Promise<unknown>;
}
export interface DeleteExchangeDialogProps extends BaseDialogProps {
exchangeId: string;
exchangeName: string;
providerMappingCount: number;
onConfirmDelete: (exchangeId: string) => Promise<boolean>;
}
// Legacy compatibility - can be removed later
export type ExchangesApiResponse<T = unknown> = ApiResponse<T>;
}

View file

@ -32,17 +32,6 @@ export interface ProviderMappingStats {
coveragePercentage: number;
}
export interface SyncStatus {
lastSync?: {
symbols?: string;
exchanges?: string;
providerMappings?: string;
};
pendingJobs?: number;
activeJobs?: number;
completedJobs?: number;
failedJobs?: number;
}
export type DataClearType = 'exchanges' | 'provider_mappings' | 'all';