event-scraper-v3/src/index.ts

53 lines
1.8 KiB
TypeScript

import dotenv from 'dotenv';
dotenv.config();
import { createConnection } from 'typeorm';
import { Connection } from '@solana/web3.js';
import { startEventParsing } from './scrapeSerumQueue';
import { TRACKED_MARKETS, wait, WEBSOCKET_MARKETS } from './utils';
import { watchMarketEventQueue } from './watchQueue';
import { getAllPerpMarkets, startPerpEventParsing } from './scrapePerpQueue';
const SECONDS = 1000;
let connection = new Connection(
process.env.ENDPOINT_URL || 'https://mango.rpcpool.com/d73005e4c66b26f49515b15f09a3'
);
// let devnetConnection = new Connection('https://mango.devnet.rpcpool.com');
export const SERUM_DEX_V3_PK = '9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin';
async function scrapeSerumMarkets(db) {
for (const trackedMarket of TRACKED_MARKETS) {
const scrapeInterval = trackedMarket?.interval || 6 * SECONDS;
startEventParsing(db, connection, trackedMarket, scrapeInterval);
await wait(5000);
}
}
async function scrapePerpMarkets(db) {
const scrapeInterval = 4 * SECONDS;
const mangoGroupPerpMarkets = await getAllPerpMarkets(connection);
for (const perpMarket of mangoGroupPerpMarkets) {
startPerpEventParsing(db, connection, perpMarket, scrapeInterval);
await wait(5000);
}
}
createConnection().then(async (db) => {
if (process.env.USE_WEBSOCKET === 'TRUE') {
// TODO - use TRACKED_MARKETS once websocket isn't rate limited
for (const trackedMarket of WEBSOCKET_MARKETS) {
trackedMarket['baseSymbol'] = trackedMarket['name'].split('/')[0];
trackedMarket['quoteSymbol'] = trackedMarket['name'].split('/')[1];
console.log('Starting connection to:', trackedMarket.name);
watchMarketEventQueue(db, trackedMarket);
await wait(3000);
}
} else {
scrapeSerumMarkets(db);
scrapePerpMarkets(db);
}
});