diff --git a/src/__tests__/qrid.test.ts b/src/__tests__/qrid.test.ts index 384eb964..445a0234 100644 --- a/src/__tests__/qrid.test.ts +++ b/src/__tests__/qrid.test.ts @@ -25,6 +25,7 @@ test('Old QR ID works', () => { transactionIndex: 81, type: 2, value: new BigNumber('0'), + chainId: '1', }; const rawTransaction: EVMTransaction = { @@ -67,6 +68,7 @@ test('New ZID works', () => { transactionIndex: 81, type: 2, value: new BigNumber('0'), + chainId: '1', }; const rawTransaction: EVMTransaction = { diff --git a/src/entities/block.ts b/src/entities/block.ts index da090df2..7a7e39a7 100644 --- a/src/entities/block.ts +++ b/src/entities/block.ts @@ -21,4 +21,6 @@ export class Block { public gasUsed!: number; @Column({ name: 'parent_hash', type: 'varchar' }) public parentHash!: string; + @Column({ name: 'chain_id', type: 'varchar' }) + public chainId!: string; } diff --git a/src/entities/current_epoch_info.ts b/src/entities/current_epoch_info.ts index a82fabd5..49053b27 100644 --- a/src/entities/current_epoch_info.ts +++ b/src/entities/current_epoch_info.ts @@ -29,4 +29,6 @@ export class CurrentEpochInfo { // Relevant ZRX staked for this epoch @Column({ name: 'zrx_staked', type: 'numeric', transformer: bigNumberTransformer }) public zrxStaked!: BigNumber; + @Column({ name: 'chain_id', type: 'varchar' }) + public chainId!: string; } diff --git a/src/entities/event.ts b/src/entities/event.ts index 92397208..1ddd9266 100644 --- a/src/entities/event.ts +++ b/src/entities/event.ts @@ -24,4 +24,6 @@ export abstract class Event { // The block number where the event occurred. @Column({ name: 'block_number', type: 'bigint', transformer: numberToBigIntTransformer }) public blockNumber!: number; + @Column({ name: 'chain_id', type: 'varchar' }) + public chainId!: string; } diff --git a/src/entities/event_backfill.ts b/src/entities/event_backfill.ts index 773c2826..72beb448 100644 --- a/src/entities/event_backfill.ts +++ b/src/entities/event_backfill.ts @@ -9,4 +9,6 @@ export class EventBackfill { // depth of the block @PrimaryColumn({ name: 'block_number', type: 'bigint', transformer: numberToBigIntTransformer }) public blockNumber!: number; + @Column({ name: 'chain_id', type: 'varchar' }) + public chainId!: string; } diff --git a/src/entities/last_block_processed.ts b/src/entities/last_block_processed.ts index 60833ba9..9545a4b4 100644 --- a/src/entities/last_block_processed.ts +++ b/src/entities/last_block_processed.ts @@ -29,4 +29,6 @@ export class LastBlockProcessed { @Column({ name: 'block_hash', type: 'varchar' }) public blockHash!: string | null; + @Column({ name: 'chain_id', type: 'varchar' }) + public chainId!: string; } diff --git a/src/entities/staking_pool_earned_rewards_in_epoch_event.ts b/src/entities/staking_pool_earned_rewards_in_epoch_event.ts index f9841fc9..f9767eb8 100644 --- a/src/entities/staking_pool_earned_rewards_in_epoch_event.ts +++ b/src/entities/staking_pool_earned_rewards_in_epoch_event.ts @@ -11,4 +11,6 @@ export class StakingPoolEarnedRewardsInEpochEvent extends Event { // The ID of the pool. @Column({ name: 'pool_id', type: 'varchar' }) public poolId!: string; + @Column({ name: 'chain_id', type: 'varchar' }) + public chainId!: string; } diff --git a/src/entities/staking_pool_metadata.ts b/src/entities/staking_pool_metadata.ts index 21f77c48..e0ae50e7 100644 --- a/src/entities/staking_pool_metadata.ts +++ b/src/entities/staking_pool_metadata.ts @@ -24,4 +24,6 @@ export class StakingPoolMetadata { // whether or not the info has been verified by the 0x core team @Column({ name: 'verified', type: 'boolean' }) public verified!: boolean; + @Column({ name: 'chain_id', type: 'varchar' }) + public chainId!: string; } diff --git a/src/entities/staking_proxy_deployment.ts b/src/entities/staking_proxy_deployment.ts index 80e81b82..4f1b382f 100644 --- a/src/entities/staking_proxy_deployment.ts +++ b/src/entities/staking_proxy_deployment.ts @@ -23,4 +23,6 @@ export class StakingProxyDeployment { // The timestamp of the block where the transaction occurred @Column({ name: 'block_timestamp', type: 'bigint', transformer: numberToBigIntTransformer }) public blockTimestamp!: number; + @Column({ name: 'chain_id', type: 'varchar' }) + public chainId!: string; } diff --git a/src/entities/token_metadata.ts b/src/entities/token_metadata.ts index acb020f4..ee351d15 100644 --- a/src/entities/token_metadata.ts +++ b/src/entities/token_metadata.ts @@ -16,4 +16,6 @@ export class TokenMetadata { public name!: string | null; @Column({ name: 'decimals', type: 'int', transformer: numberToBigIntTransformer }) public decimals!: BigNumber | null; + @Column({ name: 'chain_id', type: 'varchar' }) + public chainId!: string; } diff --git a/src/entities/transaction.ts b/src/entities/transaction.ts index 541309b5..8f0edd34 100644 --- a/src/entities/transaction.ts +++ b/src/entities/transaction.ts @@ -59,4 +59,6 @@ export class Transaction { // priority fee in wei @Column({ name: 'max_priority_fee_per_gas', type: 'numeric', transformer: bigNumberTransformer }) public maxPriorityFeePerGas!: BigNumber | null; + @Column({ name: 'chain_id', type: 'varchar' }) + public chainId!: string; } diff --git a/src/entities/transaction_log.ts b/src/entities/transaction_log.ts index 1da9562d..828d2de3 100644 --- a/src/entities/transaction_log.ts +++ b/src/entities/transaction_log.ts @@ -19,4 +19,6 @@ export class TransactionLogs { // depth of the block @Column({ name: 'block_number', type: 'bigint', transformer: numberToBigIntTransformer }) public blockNumber!: number; + @Column({ name: 'chain_id', type: 'varchar' }) + public chainId!: string; } diff --git a/src/entities/transaction_receipt.ts b/src/entities/transaction_receipt.ts index 9a903a10..087ff405 100644 --- a/src/entities/transaction_receipt.ts +++ b/src/entities/transaction_receipt.ts @@ -32,4 +32,6 @@ export class TransactionReceipt { // Amount of gas consumed by the tx in L1 (only filled when this amount is not included in the L2 gas, (like in OP stack chains) @Column({ name: 'gas_fees_l1', type: 'numeric', transformer: bigNumberTransformer }) public gasFeesL1!: BigNumber | null; + @Column({ name: 'chain_id', type: 'varchar' }) + public chainId!: string; } diff --git a/src/parsers/events/parse_event.ts b/src/parsers/events/parse_event.ts index 329f5fdd..352c5115 100644 --- a/src/parsers/events/parse_event.ts +++ b/src/parsers/events/parse_event.ts @@ -1,5 +1,6 @@ import { Event } from '../../entities'; import { LogEntry, RawLogEntry } from 'ethereum-types'; +import { CHAIN_ID } from '../../config'; export function parseEvent(eventLog: LogEntry | RawLogEntry, eventEntity: Event) { eventEntity.observedTimestamp = new Date().getTime(); @@ -9,4 +10,5 @@ export function parseEvent(eventLog: LogEntry | RawLogEntry, eventEntity: Event) eventEntity.logIndex = eventLog.logIndex as number; eventEntity.blockHash = (eventLog.blockHash as string).toLowerCase(); eventEntity.blockNumber = eventLog.blockNumber as number; + eventEntity.chainId = CHAIN_ID.toString(); } diff --git a/src/parsers/staking-pool-registry/index.ts b/src/parsers/staking-pool-registry/index.ts index c0ab1a58..b51b5333 100644 --- a/src/parsers/staking-pool-registry/index.ts +++ b/src/parsers/staking-pool-registry/index.ts @@ -1,3 +1,4 @@ +import { CHAIN_ID } from '../../config'; import { BASE_GITHUB_LOGO_URL } from '../../config'; import { MetadataResponse, PoolMetadataResponse, Pools } from '../../data_sources/staking-pool-registry'; import { StakingPoolMetadata } from '../../entities'; @@ -30,6 +31,7 @@ function parseStakingPoolMetadata(poolMetadataResponse: PoolMetadataResponse, po stakingPoolMetadata.logoUrl = poolMetadataResponse.logo_img === undefined ? null : baseGithubLogoUrl.concat(poolMetadataResponse.logo_img); stakingPoolMetadata.verified = poolMetadataResponse.verified; + stakingPoolMetadata.chainId = CHAIN_ID.toString(); return stakingPoolMetadata; } diff --git a/src/parsers/web3/parse_web3_objects.ts b/src/parsers/web3/parse_web3_objects.ts index 865d39aa..88191007 100644 --- a/src/parsers/web3/parse_web3_objects.ts +++ b/src/parsers/web3/parse_web3_objects.ts @@ -85,6 +85,7 @@ export function parseTransaction(rawTx: EVMTransaction): Transaction { transaction.maxFeePerGas = rawTx.maxFeePerGas === undefined ? null : new BigNumber(rawTx.maxFeePerGas); transaction.maxPriorityFeePerGas = rawTx.maxPriorityFeePerGas === undefined ? null : new BigNumber(rawTx.maxPriorityFeePerGas); + transaction.chainId = CHAIN_ID.toString(); if ( transaction.input.includes(SETTLER_EXECUTE_SELECTOR) || @@ -165,6 +166,7 @@ export function parseTransactionReceipt(rawReceipt: RawReceipt): TransactionRece transactionReceipt.toAddress = rawReceipt.to; transactionReceipt.gasUsed = new BigNumber(rawReceipt.gasUsed); transactionReceipt.gasFeesL1 = rawReceipt.gasFeesL1 === undefined ? null : new BigNumber(rawReceipt.gasFeesL1); + transactionReceipt.chainId = CHAIN_ID.toString(); return transactionReceipt; } @@ -181,6 +183,7 @@ export function parseTransactionLogs(rawReceipt: RawReceipt): TransactionLogs { transactionLogs.logs = JSON.stringify(rawReceipt.logs); transactionLogs.blockHash = rawReceipt.blockHash === null ? '' : rawReceipt.blockHash; transactionLogs.blockNumber = rawReceipt.blockNumber === null ? 0 : rawReceipt.blockNumber; + transactionLogs.chainId = CHAIN_ID.toString(); return transactionLogs; } @@ -199,6 +202,7 @@ export function parseBlock(rawBlock: BlockWithoutTransactionData): Block { parsedBlock.baseFeePerGas = rawBlock.baseFeePerGas; parsedBlock.gasUsed = rawBlock.gasUsed; parsedBlock.parentHash = rawBlock.parentHash; + parsedBlock.chainId = CHAIN_ID.toString(); return parsedBlock; } diff --git a/src/scripts/backfill_events.ts b/src/scripts/backfill_events.ts index eb3a763e..e89acc09 100644 --- a/src/scripts/backfill_events.ts +++ b/src/scripts/backfill_events.ts @@ -1,4 +1,4 @@ -import { EVM_RPC_URL } from '../config'; +import { EVM_RPC_URL, CHAIN_ID } from '../config'; import { Web3Source } from '../data_sources/events/web3'; import { EventBackfill } from '../entities'; import { eventScrperProps, EventScraperProps, CommonEventParams } from '../events'; @@ -78,6 +78,7 @@ export class EventsBackfillScraper { .from(EventBackfill) .where('blockNumber >= :startBlockNumber', { startBlockNumber }) .andWhere('blockNumber <= :endBlockNumber', { endBlockNumber }) + .andWhere('chainId = :chainId', { "chainId": CHAIN_ID }) .execute(); } diff --git a/src/scripts/pull_and_save_backfill_tx.ts b/src/scripts/pull_and_save_backfill_tx.ts index 0e94f774..46301990 100644 --- a/src/scripts/pull_and_save_backfill_tx.ts +++ b/src/scripts/pull_and_save_backfill_tx.ts @@ -1,4 +1,4 @@ -import { EVM_RPC_URL, MAX_TX_TO_PULL, SCHEMA } from '../config'; +import { CHAIN_ID, EVM_RPC_URL, MAX_TX_TO_PULL, SCHEMA } from '../config'; import { Web3Source } from '../data_sources/events/web3'; import { Transaction, TransactionReceipt } from '../entities'; import { chunk, logger } from '../utils'; @@ -35,11 +35,11 @@ export class BackfillTxScraper { const txData = await getParseTxsAsync(web3Source, txList); const txHashList = txData.parsedTxs.map((tx) => `'${tx.transactionHash}'`).toString(); - const txDeleteQuery = `DELETE FROM ${SCHEMA}.transactions WHERE transaction_hash IN (${txHashList})`; - const txReceiptDeleteQuery = `DELETE FROM ${SCHEMA}.transaction_receipts WHERE transaction_hash IN (${txHashList});`; - // const txLogsDeleteQuery = `DELETE FROM ${SCHEMA}.transaction_logs WHERE transaction_hash IN (${txHashList});`; + const txDeleteQuery = `DELETE FROM ${SCHEMA}.transactions_${CHAIN_ID} WHERE transaction_hash IN (${txHashList})`; + const txReceiptDeleteQuery = `DELETE FROM ${SCHEMA}.transaction_receipts_${CHAIN_ID} WHERE transaction_hash IN (${txHashList});`; + // const txLogsDeleteQuery = `DELETE FROM ${SCHEMA}.transaction_logs_${CHAIN_ID} WHERE transaction_hash IN (${txHashList});`; const txBacklogQuery = ` - UPDATE ${SCHEMA}.tx_backfill + UPDATE ${SCHEMA}.tx_backfill_${CHAIN_ID} SET done = true WHERE transaction_hash IN (${txHashList})`; diff --git a/src/scripts/pull_and_save_block_events.ts b/src/scripts/pull_and_save_block_events.ts index bf33417a..5fd09117 100644 --- a/src/scripts/pull_and_save_block_events.ts +++ b/src/scripts/pull_and_save_block_events.ts @@ -1,5 +1,6 @@ import { BLOCKS_REORG_CHECK_INCREMENT, + CHAIN_ID, CHAIN_NAME, EVM_RPC_URL, MAX_BLOCKS_REORG, @@ -208,7 +209,7 @@ async function saveFullBlocks(connection: Connection, eventTables: string[], par blockRanges.forEach(async (blockRange) => { deletePromises.push( queryRunner.manager.query( - `DELETE FROM ${SCHEMA}.${tableName} + `DELETE FROM ${SCHEMA}.${tableName}_${CHAIN_ID} WHERE block_number >= ${blockRange.start} AND block_number <= ${blockRange.end}`, @@ -475,7 +476,7 @@ export class BlockEventsScraper { const queryRunner = connection.createQueryRunner(); await queryRunner.connect(); await queryRunner.manager.query( - `DELETE FROM ${SCHEMA}.blocks + `DELETE FROM ${SCHEMA}.blocks_${CHAIN_ID} WHERE block_number > ${testBlockNumber}`, ); queryRunner.release(); diff --git a/src/scripts/pull_and_save_tokens_backfill.ts b/src/scripts/pull_and_save_tokens_backfill.ts index 55b4ed1e..3daba98a 100644 --- a/src/scripts/pull_and_save_tokens_backfill.ts +++ b/src/scripts/pull_and_save_tokens_backfill.ts @@ -1,4 +1,4 @@ -import { EVM_RPC_URL, MAX_BLOCKS_TO_SEARCH, SCHEMA } from '../config'; +import { CHAIN_ID, EVM_RPC_URL, MAX_BLOCKS_TO_SEARCH, SCHEMA } from '../config'; import { Web3Source } from '../data_sources/events/web3'; import { logger } from '../utils/logger'; import { SCRIPT_RUN_DURATION } from '../utils/metrics'; @@ -30,7 +30,7 @@ export class TokensFromBackfill { const savedTokenCount = await getParseSaveTokensAsync(connection, producer, web3Source, tokens); const tokenList = tokens.map((token: string) => `'${token}'`).toString(); - const tokenBackfillQuery = `DELETE FROM ${SCHEMA}.tokens_backfill WHERE address IN (${tokenList});`; + const tokenBackfillQuery = `DELETE FROM ${SCHEMA}.tokens_backfill_${CHAIN_ID} WHERE address IN (${tokenList});`; const queryRunner = connection.createQueryRunner(); await queryRunner.connect(); diff --git a/src/scripts/utils/event_abi_utils.ts b/src/scripts/utils/event_abi_utils.ts index 18a920da..7c954939 100644 --- a/src/scripts/utils/event_abi_utils.ts +++ b/src/scripts/utils/event_abi_utils.ts @@ -1,4 +1,4 @@ -import { CHAIN_NAME_LOWER, MAX_BLOCKS_REORG, MAX_BLOCKS_TO_SEARCH, RESCRAPE_BLOCKS, SCHEMA } from '../../config'; +import { CHAIN_ID, CHAIN_NAME_LOWER, MAX_BLOCKS_REORG, MAX_BLOCKS_TO_SEARCH, RESCRAPE_BLOCKS, SCHEMA } from '../../config'; import { LogPullInfo, Web3Source } from '../../data_sources/events/web3'; import { Event } from '../../entities'; import { LastBlockProcessed } from '../../entities'; @@ -267,24 +267,24 @@ export class PullAndSaveEventsByTopic { let deleteQuery = ''; if (tableName === 'erc20_bridge_transfer_events') { if (deleteOptions.directFlag && deleteOptions.directProtocol != undefined) { - deleteQuery = `DELETE FROM ${SCHEMA}.${tableName} WHERE block_number >= ${startBlock} AND block_number <= ${endBlock} AND direct_protocol IN ('${deleteOptions.directProtocol.join( + deleteQuery = `DELETE FROM ${SCHEMA}.${tableName}_${CHAIN_ID} WHERE block_number >= ${startBlock} AND block_number <= ${endBlock} AND direct_protocol IN ('${deleteOptions.directProtocol.join( "','", )}')`; } else if (deleteOptions.directFlag === false) { - deleteQuery = `DELETE FROM ${SCHEMA}.${tableName} WHERE block_number >= ${startBlock} AND block_number <= ${endBlock} AND direct_flag = FALSE`; + deleteQuery = `DELETE FROM ${SCHEMA}.${tableName}_${CHAIN_ID} WHERE block_number >= ${startBlock} AND block_number <= ${endBlock} AND direct_flag = FALSE`; } } else if (tableName === 'native_fills' && deleteOptions.protocolVersion != undefined) { if (deleteOptions.protocolVersion === 'v4' && deleteOptions.nativeOrderType != undefined) { - deleteQuery = `DELETE FROM ${SCHEMA}.${tableName} WHERE block_number >= ${startBlock} AND block_number <= ${endBlock} AND protocol_version = '${deleteOptions.protocolVersion}' AND native_order_type = '${deleteOptions.nativeOrderType}' `; + deleteQuery = `DELETE FROM ${SCHEMA}.${tableName}_${CHAIN_ID} WHERE block_number >= ${startBlock} AND block_number <= ${endBlock} AND protocol_version = '${deleteOptions.protocolVersion}' AND native_order_type = '${deleteOptions.nativeOrderType}' `; } else { - deleteQuery = `DELETE FROM ${SCHEMA}.${tableName} WHERE block_number >= ${startBlock} AND block_number <= ${endBlock} AND protocol_version = '${deleteOptions.protocolVersion}'`; + deleteQuery = `DELETE FROM ${SCHEMA}.${tableName}_${CHAIN_ID} WHERE block_number >= ${startBlock} AND block_number <= ${endBlock} AND protocol_version = '${deleteOptions.protocolVersion}'`; } } else if (tableName === 'uniswap_v2_pair_created_events') { - deleteQuery = `DELETE FROM ${SCHEMA}.${tableName} WHERE block_number >= ${startBlock} AND block_number <= ${endBlock} AND protocol = '${deleteOptions.protocol}'`; + deleteQuery = `DELETE FROM ${SCHEMA}.${tableName}_${CHAIN_ID} WHERE block_number >= ${startBlock} AND block_number <= ${endBlock} AND protocol = '${deleteOptions.protocol}'`; } else if (tableName === 'log_transfer_events') { - deleteQuery = `DELETE FROM ${SCHEMA}.${tableName} WHERE block_number >= ${startBlock} AND block_number <= ${endBlock} AND "to" = '${deleteOptions.recipient}'`; + deleteQuery = `DELETE FROM ${SCHEMA}.${tableName}_${CHAIN_ID} WHERE block_number >= ${startBlock} AND block_number <= ${endBlock} AND "to" = '${deleteOptions.recipient}'`; } else { - deleteQuery = `DELETE FROM ${SCHEMA}.${tableName} WHERE block_number >= ${startBlock} AND block_number <= ${endBlock}`; + deleteQuery = `DELETE FROM ${SCHEMA}.${tableName}_${CHAIN_ID} WHERE block_number >= ${startBlock} AND block_number <= ${endBlock}`; } await queryRunner.connect(); @@ -408,5 +408,6 @@ export const getLastBlockProcessedEntity = ( lastBlockProcessed.lastProcessedBlockNumber = endBlockNumber; lastBlockProcessed.processedTimestamp = new Date().getTime(); lastBlockProcessed.blockHash = endBlockHash; + lastBlockProcessed.chainId = CHAIN_ID.toString(); return lastBlockProcessed; }; diff --git a/src/scripts/utils/event_utils.ts b/src/scripts/utils/event_utils.ts index ec8ee246..733a1e0d 100644 --- a/src/scripts/utils/event_utils.ts +++ b/src/scripts/utils/event_utils.ts @@ -1,4 +1,4 @@ -import { FIRST_SEARCH_BLOCK, MAX_BLOCKS_REORG, MAX_BLOCKS_TO_SEARCH, SCHEMA } from '../../config'; +import { CHAIN_ID, FIRST_SEARCH_BLOCK, MAX_BLOCKS_REORG, MAX_BLOCKS_TO_SEARCH, SCHEMA } from '../../config'; import { Web3Source } from '../../data_sources/events/web3'; import { LastBlockProcessed } from '../../entities'; import { logger } from '../../utils/logger'; @@ -102,7 +102,7 @@ export class PullAndSaveEvents { try { // delete events scraped prior to the most recent block range await queryRunner.manager.query( - `DELETE FROM ${SCHEMA}.${tableName} WHERE block_number >= ${startBlockNumber} AND block_number <= ${endBlock}`, + `DELETE FROM ${SCHEMA}.${tableName}_${CHAIN_ID} WHERE block_number >= ${startBlockNumber} AND block_number <= ${endBlock}`, ); await queryRunner.manager.save(toSave); await queryRunner.manager.save(lastBlockProcessed); diff --git a/src/scripts/utils/web3_utils.ts b/src/scripts/utils/web3_utils.ts index 501f4d34..d810721b 100644 --- a/src/scripts/utils/web3_utils.ts +++ b/src/scripts/utils/web3_utils.ts @@ -1,4 +1,5 @@ import { + CHAIN_ID, CHAIN_NAME_LOWER, FEAT_NFT, FIRST_SEARCH_BLOCK, @@ -311,7 +312,7 @@ FROM ( try { // delete events scraped prior to the most recent block range await queryRunner.manager.query( - `DELETE FROM ${SCHEMA}.${tableName} WHERE block_number >= ${startBlock} AND block_number <= ${endBlock}`, + `DELETE FROM ${SCHEMA}.${tableName}_${CHAIN_ID} WHERE block_number >= ${startBlock} AND block_number <= ${endBlock}`, ); for (const chunkItems of chunk(toSave, 300)) { await queryRunner.manager.insert(Block, chunkItems); @@ -340,7 +341,7 @@ FROM ( await queryRunner.startTransaction(); try { await queryRunner.manager.query( - `DELETE FROM ${SCHEMA}.transactions WHERE transaction_hash IN (${txHashList})`, + `DELETE FROM ${SCHEMA}.transactions_${CHAIN_ID} WHERE transaction_hash IN (${txHashList})`, ); for (const chunkItems of chunk(transactions, 300)) { @@ -385,10 +386,10 @@ FROM ( if (txReceiptsHashList.length > 0) { query = query + - `DELETE FROM ${SCHEMA}.transaction_receipts WHERE transaction_hash IN (${txReceiptsHashList});`; + `DELETE FROM ${SCHEMA}.transaction_receipts_${CHAIN_ID} WHERE transaction_hash IN (${txReceiptsHashList});`; } if (txLogsHashList.length > 0) { - query = query + `DELETE FROM ${SCHEMA}.transaction_logs WHERE transaction_hash IN (${txLogsHashList});`; + query = query + `DELETE FROM ${SCHEMA}.transaction_logs_${CHAIN_ID} WHERE transaction_hash IN (${txLogsHashList});`; } await queryRunner.manager.query(query); logger.debug('DELETES probably went well'); @@ -531,6 +532,7 @@ export async function getParseSaveTokensAsync( name: erc721Names[index], symbol: erc721Symbols[index], observedTimestamp: new Date().getTime(), + chainId: CHAIN_ID.toString(), } as TokenMetadata; }); const erc1155TokenMetadata = erc1155Tokens.map((address, index) => { @@ -540,6 +542,7 @@ export async function getParseSaveTokensAsync( name: erc1155Names[index], symbol: erc1155Symbols[index], observedTimestamp: new Date().getTime(), + chainId: CHAIN_ID.toString(), } as TokenMetadata; }); const erc20TokenMetadata = erc20Tokens.map((address, index) => { @@ -550,6 +553,7 @@ export async function getParseSaveTokensAsync( symbol: erc20Symbols[index], decimals: erc20Decimals[index], observedTimestamp: new Date().getTime(), + chainId: CHAIN_ID.toString(), } as TokenMetadata; }); @@ -644,9 +648,9 @@ export async function getParseSaveTxAsync( const txData = await getParseTxsAsync(web3Source, hashes); const txHashList = txData.parsedTxs.map((tx) => `'${tx.transactionHash}'`).toString(); - const txDeleteQuery = `DELETE FROM ${SCHEMA}.transactions WHERE transaction_hash IN (${txHashList})`; - const txReceiptDeleteQuery = `DELETE FROM ${SCHEMA}.transaction_receipts WHERE transaction_hash IN (${txHashList});`; - const txLogsDeleteQuery = `DELETE FROM ${SCHEMA}.transaction_logs WHERE transaction_hash IN (${txHashList});`; + const txDeleteQuery = `DELETE FROM ${SCHEMA}.transactions_${CHAIN_ID} WHERE transaction_hash IN (${txHashList})`; + const txReceiptDeleteQuery = `DELETE FROM ${SCHEMA}.transaction_receipts_${CHAIN_ID} WHERE transaction_hash IN (${txHashList});`; + const txLogsDeleteQuery = `DELETE FROM ${SCHEMA}.transaction_logs_${CHAIN_ID} WHERE transaction_hash IN (${txHashList});`; if (txData.parsedTxs.length) { // delete the transactions for the fetched events const queryRunner = connection.createQueryRunner(); diff --git a/src/settlerContractSingleton.ts b/src/settlerContractSingleton.ts index 2f5337bb..4d13e82c 100644 --- a/src/settlerContractSingleton.ts +++ b/src/settlerContractSingleton.ts @@ -1,3 +1,4 @@ +import { CHAIN_ID } from './config'; import { SCHEMA } from './config'; import { registerSettlerContractEventProp } from './events'; import { logger } from './utils'; @@ -20,7 +21,7 @@ export class SettlerContractSingleton { const settlerContracts = await connection.query( ` SELECT "to" AS address - FROM ${SCHEMA}.settler_erc721_transfer_events + FROM ${SCHEMA}.settler_erc721_transfer_events_${CHAIN_ID} WHERE "to" <> '0x0000000000000000000000000000000000000000' ORDER BY block_number `, diff --git a/src/tokenMetadataSingleton.ts b/src/tokenMetadataSingleton.ts index 8a2e8321..68e25b2b 100644 --- a/src/tokenMetadataSingleton.ts +++ b/src/tokenMetadataSingleton.ts @@ -23,6 +23,7 @@ export class TokenMetadataSingleton { const tmp = await connection .getRepository(TokenMetadata) .createQueryBuilder('token_metadata') + .where('token_metadata.chainId = :chainId', { chainId: CHAIN_ID.toString() }) .leftJoinAndSelect(TokenRegistry, 'token_registry', 'token_metadata.address = token_registry.address') .select([ 'token_metadata.address', diff --git a/src/uniV2PoolSingleton.ts b/src/uniV2PoolSingleton.ts index fee9e9e7..58c1c037 100644 --- a/src/uniV2PoolSingleton.ts +++ b/src/uniV2PoolSingleton.ts @@ -1,3 +1,4 @@ +import { CHAIN_ID } from './config'; import { UniswapV2PairCreatedEvent } from './entities'; import { logger } from './utils'; import { Connection } from 'typeorm'; @@ -28,7 +29,11 @@ export class UniV2PoolSingleton { if (!UniV2PoolSingleton.instance) { UniV2PoolSingleton.instance = new UniV2PoolSingleton(); logger.info('Loading Uni V2 and clones Pools to memory'); - const newPools = await connection.getRepository(UniswapV2PairCreatedEvent).find(); + const newPools = await connection + .getRepository(UniswapV2PairCreatedEvent) + .createQueryBuilder('uniswap_v2_pair_created_events') + .where('uniswap_v2_pair_created_events.chainId = :chainId', { chainId: CHAIN_ID.toString() }) + .getMany(); UniV2PoolSingleton.instance.addNewPools(newPools); } } diff --git a/src/uniV3PoolSingleton.ts b/src/uniV3PoolSingleton.ts index 47a1d91f..9f853404 100644 --- a/src/uniV3PoolSingleton.ts +++ b/src/uniV3PoolSingleton.ts @@ -1,3 +1,4 @@ +import { CHAIN_ID } from './config'; import { UniswapV3PoolCreatedEvent } from './entities'; import { logger } from './utils'; import { Connection } from 'typeorm'; @@ -26,7 +27,11 @@ export class UniV3PoolSingleton { if (!UniV3PoolSingleton.instance) { UniV3PoolSingleton.instance = new UniV3PoolSingleton(); logger.info('Loading Uni V3 Pools to memory'); - const newPools = await connection.getRepository(UniswapV3PoolCreatedEvent).find(); + const newPools = await connection. + getRepository(UniswapV3PoolCreatedEvent) + .createQueryBuilder('uniswap_v3_pool_created_events') + .where('uniswap_v3_pool_created_events.chainId = :chainId', { chainId: CHAIN_ID.toString() }) + .getMany(); UniV3PoolSingleton.instance.addNewPools(newPools); } }