removed unified exchange
This commit is contained in:
parent
265e10a658
commit
f69c7b034b
3 changed files with 4 additions and 49 deletions
|
|
@ -52,8 +52,7 @@ The Data Sync Service handles synchronization of raw MongoDB data to PostgreSQL
|
||||||
|
|
||||||
### 1. Multi-Provider Exchange Sync
|
### 1. Multi-Provider Exchange Sync
|
||||||
Instead of only syncing QM exchanges, the enhanced sync manager:
|
Instead of only syncing QM exchanges, the enhanced sync manager:
|
||||||
- Syncs from unified `exchanges` collection first (primary source)
|
- Syncs from EOD exchanges (comprehensive global data with currencies)
|
||||||
- Enriches with EOD exchanges (comprehensive global data with currencies)
|
|
||||||
- Adds IB exchanges for additional coverage (214 exchanges vs 25 in QM)
|
- Adds IB exchanges for additional coverage (214 exchanges vs 25 in QM)
|
||||||
|
|
||||||
### 2. Intelligent Exchange Mapping
|
### 2. Intelligent Exchange Mapping
|
||||||
|
|
|
||||||
|
|
@ -162,19 +162,15 @@ export class EnhancedSyncManager {
|
||||||
// Start transaction for atomic operations
|
// Start transaction for atomic operations
|
||||||
await this.postgresClient.query('BEGIN');
|
await this.postgresClient.query('BEGIN');
|
||||||
|
|
||||||
// 1. Sync from unified exchanges collection (primary source)
|
// 1. Sync from EOD exchanges (comprehensive global data)
|
||||||
const unifiedResult = await this.syncUnifiedExchanges();
|
|
||||||
this.mergeResults(result, unifiedResult);
|
|
||||||
|
|
||||||
// 2. Sync from EOD exchanges (comprehensive global data)
|
|
||||||
const eodResult = await this.syncEODExchanges();
|
const eodResult = await this.syncEODExchanges();
|
||||||
this.mergeResults(result, eodResult);
|
this.mergeResults(result, eodResult);
|
||||||
|
|
||||||
// 3. Sync from IB exchanges (detailed asset information)
|
// 2. Sync from IB exchanges (detailed asset information)
|
||||||
const ibResult = await this.syncIBExchanges();
|
const ibResult = await this.syncIBExchanges();
|
||||||
this.mergeResults(result, ibResult);
|
this.mergeResults(result, ibResult);
|
||||||
|
|
||||||
// 4. Update sync status
|
// 3. Update sync status
|
||||||
await this.updateSyncStatus('all', 'exchanges', result.processed);
|
await this.updateSyncStatus('all', 'exchanges', result.processed);
|
||||||
|
|
||||||
await this.postgresClient.query('COMMIT');
|
await this.postgresClient.query('COMMIT');
|
||||||
|
|
@ -418,33 +414,6 @@ export class EnhancedSyncManager {
|
||||||
logger.info(`Loaded ${this.exchangeCache.size} exchanges into cache`);
|
logger.info(`Loaded ${this.exchangeCache.size} exchanges into cache`);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async syncUnifiedExchanges(): Promise<SyncResult> {
|
|
||||||
const db = this.getMongoDatabase();
|
|
||||||
const exchanges = await db.collection('exchanges').find({}).toArray();
|
|
||||||
const result: SyncResult = { processed: 0, created: 0, updated: 0, skipped: 0, errors: 0 };
|
|
||||||
|
|
||||||
for (const exchange of exchanges) {
|
|
||||||
try {
|
|
||||||
// Create provider exchange mapping for unified collection
|
|
||||||
await this.createProviderExchangeMapping(
|
|
||||||
'unified', // provider
|
|
||||||
exchange.sourceCode || exchange.code,
|
|
||||||
exchange.sourceName || exchange.name,
|
|
||||||
exchange.sourceRegion,
|
|
||||||
null, // currency not in unified
|
|
||||||
0.9 // high confidence for unified mappings
|
|
||||||
);
|
|
||||||
|
|
||||||
result.processed++;
|
|
||||||
result.created++; // Count as created mapping
|
|
||||||
} catch (error) {
|
|
||||||
logger.error('Failed to process unified exchange', { error, exchange });
|
|
||||||
result.errors++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
private async syncEODExchanges(): Promise<SyncResult> {
|
private async syncEODExchanges(): Promise<SyncResult> {
|
||||||
const db = this.getMongoDatabase();
|
const db = this.getMongoDatabase();
|
||||||
|
|
|
||||||
|
|
@ -355,19 +355,6 @@ export class ExchangeService {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 'unified': {
|
|
||||||
const unifiedExchanges = await db.collection('exchanges').find({}).toArray();
|
|
||||||
providerExchanges = unifiedExchanges
|
|
||||||
.filter(exchange => !mappedCodes.has(exchange.sourceCode || exchange.code))
|
|
||||||
.map(exchange => ({
|
|
||||||
provider_exchange_code: exchange.sourceCode || exchange.code,
|
|
||||||
provider_exchange_name: exchange.sourceName || exchange.name,
|
|
||||||
country_code: null,
|
|
||||||
currency: null,
|
|
||||||
symbol_count: null,
|
|
||||||
}));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
throw new Error(`Unknown provider: ${provider}`);
|
throw new Error(`Unknown provider: ${provider}`);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue