more lint fixes

This commit is contained in:
Boki 2025-06-20 09:25:06 -04:00
parent 781ea7a9df
commit 2e073b1d44
4 changed files with 47 additions and 35 deletions

View file

@ -2,6 +2,8 @@
* Enhanced Sync Manager - Improved syncing with comprehensive exchange data
*/
import { getLogger } from '@stock-bot/logger';
import { MongoDBClient } from '@stock-bot/mongodb-client';
import { PostgreSQLClient } from '@stock-bot/postgres-client';
import { getMongoDBClient, getPostgreSQLClient } from '../clients';
const logger = getLogger('enhanced-sync-manager');
@ -32,8 +34,8 @@ interface SyncStatus {
export class EnhancedSyncManager {
private isInitialized = false;
private mongoClient: any;
private postgresClient: any;
private mongoClient: MongoDBClient;
private postgresClient: PostgreSQLClient;
private exchangeCache: Map<string, ExchangeMapping> = new Map();
async initialize(): Promise<void> {
@ -301,7 +303,7 @@ export class EnhancedSyncManager {
// Start transaction
await this.postgresClient.query('BEGIN');
let symbols: any[] = [];
let symbols: Record<string, unknown>[] = [];
// Get symbols based on provider
const db = this.getMongoDatabase();

View file

@ -8,8 +8,8 @@ const logger = getLogger('sync-manager');
export class SyncManager {
private isInitialized = false;
private mongoClient: any;
private postgresClient: any;
private mongoClient: unknown;
private postgresClient: unknown;
async initialize(): Promise<void> {
if (this.isInitialized) {
@ -153,7 +153,7 @@ export class SyncManager {
/**
* Get sync status for all providers
*/
async getSyncStatus(): Promise<any[]> {
async getSyncStatus(): Promise<Record<string, unknown>[]> {
const query = 'SELECT * FROM sync_status ORDER BY provider, data_type';
const result = await this.postgresClient.query(query);
return result.rows;

View file

@ -94,7 +94,7 @@ export interface ExchangeStats {
providers: number;
}
export interface ApiResponse<T = any> {
export interface ApiResponse<T = unknown> {
success: boolean;
data?: T;
error?: string;

View file

@ -7,8 +7,11 @@ export class ValidationError extends Error {
}
}
export function validateCreateExchange(data: any): CreateExchangeRequest {
const { code, name, country, currency, active = true } = data;
export function validateCreateExchange(data: unknown): CreateExchangeRequest {
if (!data || typeof data !== 'object') {
throw new ValidationError('Invalid data provided', 'data');
}
const { code, name, country, currency, active = true } = data as Record<string, unknown>;
if (!code || typeof code !== 'string') {
throw new ValidationError('Exchange code is required', 'code');
@ -47,7 +50,10 @@ export function validateCreateExchange(data: any): CreateExchangeRequest {
};
}
export function validateCreateProviderMapping(data: any): CreateProviderMappingRequest {
export function validateCreateProviderMapping(data: unknown): CreateProviderMappingRequest {
if (!data || typeof data !== 'object') {
throw new ValidationError('Invalid data provided', 'data');
}
const {
provider,
provider_exchange_code,
@ -58,7 +64,7 @@ export function validateCreateProviderMapping(data: any): CreateProviderMappingR
confidence = 1.0,
active = false,
verified = false,
} = data;
} = data as Record<string, unknown>;
if (!provider || typeof provider !== 'string') {
throw new ValidationError('Provider is required', 'provider');
@ -88,36 +94,40 @@ export function validateCreateProviderMapping(data: any): CreateProviderMappingR
};
}
export function validateUpdateExchange(data: any): any {
const updates: any = {};
export function validateUpdateExchange(data: unknown): Record<string, unknown> {
if (!data || typeof data !== 'object') {
throw new ValidationError('Invalid data provided', 'data');
}
const typedData = data as Record<string, unknown>;
const updates: Record<string, unknown> = {};
if (data.name !== undefined) {
if (typeof data.name !== 'string') {
if (typedData.name !== undefined) {
if (typeof typedData.name !== 'string') {
throw new ValidationError('Name must be a string', 'name');
}
updates.name = data.name.trim();
updates.name = typedData.name.trim();
}
if (data.active !== undefined) {
updates.active = Boolean(data.active);
if (typedData.active !== undefined) {
updates.active = Boolean(typedData.active);
}
if (data.visible !== undefined) {
updates.visible = Boolean(data.visible);
if (typedData.visible !== undefined) {
updates.visible = Boolean(typedData.visible);
}
if (data.country !== undefined) {
if (typeof data.country !== 'string' || data.country.length !== 2) {
if (typedData.country !== undefined) {
if (typeof typedData.country !== 'string' || typedData.country.length !== 2) {
throw new ValidationError('Country must be exactly 2 characters', 'country');
}
updates.country = data.country.toUpperCase().trim();
updates.country = typedData.country.toUpperCase().trim();
}
if (data.currency !== undefined) {
if (typeof data.currency !== 'string' || data.currency.length !== 3) {
if (typedData.currency !== undefined) {
if (typeof typedData.currency !== 'string' || typedData.currency.length !== 3) {
throw new ValidationError('Currency must be exactly 3 characters', 'currency');
}
updates.currency = data.currency.toUpperCase().trim();
updates.currency = typedData.currency.toUpperCase().trim();
}
if (Object.keys(updates).length === 0) {
@ -130,27 +140,27 @@ export function validateUpdateExchange(data: any): any {
export function validateUpdateProviderMapping(data: any): any {
const updates: any = {};
if (data.active !== undefined) {
updates.active = Boolean(data.active);
if (typedData.active !== undefined) {
updates.active = Boolean(typedData.active);
}
if (data.verified !== undefined) {
updates.verified = Boolean(data.verified);
if (typedData.verified !== undefined) {
updates.verified = Boolean(typedData.verified);
}
if (data.confidence !== undefined) {
const confidence = Number(data.confidence);
if (typedData.confidence !== undefined) {
const confidence = Number(typedData.confidence);
if (isNaN(confidence) || confidence < 0 || confidence > 1) {
throw new ValidationError('Confidence must be a number between 0 and 1', 'confidence');
}
updates.confidence = confidence;
}
if (data.master_exchange_id !== undefined) {
if (typeof data.master_exchange_id !== 'string') {
if (typedData.master_exchange_id !== undefined) {
if (typeof typedData.master_exchange_id !== 'string') {
throw new ValidationError('Master exchange ID must be a string', 'master_exchange_id');
}
updates.master_exchange_id = data.master_exchange_id.trim();
updates.master_exchange_id = typedData.master_exchange_id.trim();
}
if (Object.keys(updates).length === 0) {