diff --git a/apps/canonical-bridge-server/src/module/bridge/bridge.module.ts b/apps/canonical-bridge-server/src/module/bridge/bridge.module.ts index 04237a96..0f58e51b 100644 --- a/apps/canonical-bridge-server/src/module/bridge/bridge.module.ts +++ b/apps/canonical-bridge-server/src/module/bridge/bridge.module.ts @@ -5,10 +5,11 @@ import { BridgeController } from '@/module/bridge/bridge.controller'; import { BridgeService } from '@/module/bridge/bridge.service'; import { BridgeProcessor } from '@/module/bridge/bridge.processor'; import { BridgeSchedule } from '@/module/bridge/bridge.schedule'; +import { UtilService } from '@/shared/util/util.service'; @Module({ imports: [BullModule.registerQueue({ name: Queues.SyncBridge })], controllers: [BridgeController], - providers: [BridgeService, BridgeProcessor, BridgeSchedule], + providers: [BridgeService, BridgeProcessor, BridgeSchedule, UtilService], }) export class BridgeModule {} diff --git a/apps/canonical-bridge-server/src/module/bridge/bridge.processor.ts b/apps/canonical-bridge-server/src/module/bridge/bridge.processor.ts index c7730a55..18705515 100644 --- a/apps/canonical-bridge-server/src/module/bridge/bridge.processor.ts +++ b/apps/canonical-bridge-server/src/module/bridge/bridge.processor.ts @@ -18,7 +18,7 @@ import { isNativeToken, EVM_NATIVE_TOKEN_ADDRESS, } from '@bnb-chain/canonical-bridge-sdk'; -import { chains } from '@/common/constants/chains'; +import { UtilService } from '@/shared/util/util.service'; @Processor(Queues.SyncBridge) export class BridgeProcessor extends WorkerHost { @@ -26,6 +26,7 @@ export class BridgeProcessor extends WorkerHost { constructor( private web3Service: Web3Service, + private utilService: UtilService, @Inject(CACHE_MANAGER) private cache: Cache, ) { super(); @@ -178,7 +179,7 @@ export class BridgeProcessor extends WorkerHost { return true; } - const chainInfo = chains.find((e) => e.id === chainId); + const chainInfo = this.utilService.getChainConfigByChainId(chainId); if (!chainInfo) { return false; } diff --git a/apps/canonical-bridge-server/src/module/token/token.processor.ts b/apps/canonical-bridge-server/src/module/token/token.processor.ts index c5d340e9..72c1c6f5 100644 --- a/apps/canonical-bridge-server/src/module/token/token.processor.ts +++ b/apps/canonical-bridge-server/src/module/token/token.processor.ts @@ -13,6 +13,7 @@ import { ITokenJob } from '@/module/token/token.interface'; import { Web3Service } from '@/shared/web3/web3.service'; import { TokenService } from '@/module/token/token.service'; import { CACHE_MANAGER, Cache } from '@nestjs/cache-manager'; +import { UtilService } from '@/shared/util/util.service'; @Processor(Queues.SyncToken) export class TokenProcessor extends WorkerHost { @@ -21,6 +22,7 @@ export class TokenProcessor extends WorkerHost { constructor( private web3Service: Web3Service, private tokenService: TokenService, + private utilService: UtilService, @Inject(CACHE_MANAGER) private cache: Cache, @InjectQueue(Queues.SyncToken) private syncToken: Queue, ) { @@ -105,7 +107,7 @@ export class TokenProcessor extends WorkerHost { const now = Date.now(); const config = tokens .map((t) => { - const chainConfig = this.tokenService.getChainConfigByLlamaPlatform(t.platform); + const chainConfig = this.utilService.getChainConfigByLlamaPlatform(t.platform); return { ...t, chainId: chainConfig?.id ?? t.chainId, @@ -117,7 +119,7 @@ export class TokenProcessor extends WorkerHost { .reduce((r, c) => { const { address, chainId } = c; - const formattedAddr = this.tokenService.getFormattedAddress(chainId, address); + const formattedAddr = this.utilService.getFormattedAddress(chainId, address); const key = formattedAddr ? `${chainId}:${formattedAddr}` : chainId; r[key] = { price: c.price, decimals: c.decimals }; @@ -136,8 +138,8 @@ export class TokenProcessor extends WorkerHost { const config = tokens .map((t) => { const chainConfig = - this.tokenService.getChainConfigByCmcPlatform(t.platformSlug) || - this.tokenService.getChainConfigByCmcPlatform(t.slug); + this.utilService.getChainConfigByCmcPlatform(t.platformSlug) || + this.utilService.getChainConfigByCmcPlatform(t.slug); return { ...t, @@ -148,7 +150,7 @@ export class TokenProcessor extends WorkerHost { .reduce((r, c) => { const { address, chainId } = c; - const formattedAddr = this.tokenService.getFormattedAddress(chainId, address); + const formattedAddr = this.utilService.getFormattedAddress(chainId, address); const key = formattedAddr ? `${chainId}:${formattedAddr}` : chainId; r[key] = { price: c.price, id: c.id }; diff --git a/apps/canonical-bridge-server/src/module/token/token.service.ts b/apps/canonical-bridge-server/src/module/token/token.service.ts index d8a4d7a7..b7caf67d 100644 --- a/apps/canonical-bridge-server/src/module/token/token.service.ts +++ b/apps/canonical-bridge-server/src/module/token/token.service.ts @@ -11,8 +11,8 @@ import { CACHE_KEY, CMC_PRICE_REQUEST_LIMIT, LLAMA_PRICE_REQUEST_LIMIT } from '@ import { get, isEmpty } from 'lodash'; import { Prisma } from '@prisma/client'; import { Cache, CACHE_MANAGER } from '@nestjs/cache-manager'; -import { chains } from '@/common/constants/chains'; import { Web3Service } from '@/shared/web3/web3.service'; +import { UtilService } from '@/shared/util/util.service'; @Injectable() export class TokenService { @@ -24,6 +24,7 @@ export class TokenService { constructor( private web3Service: Web3Service, private databaseService: DatabaseService, + private utilService: UtilService, @Inject(CACHE_MANAGER) private cache: Cache, ) {} @@ -93,7 +94,7 @@ export class TokenService { } async getCmcTokenIdsForPriceJob() { - const platforms = this.getChainCmcPlatforms(); + const platforms = this.utilService.getChainCmcPlatforms(); const tokens = await this.databaseService.getTokens( this.cmcTokenStart, @@ -131,8 +132,8 @@ export class TokenService { } async getLlamaTokenIdsForPriceJob() { - const chainIds = this.getChainIds(); - const platforms = this.getChainLlamaPlatforms(); + const chainIds = this.utilService.getChainIds(); + const platforms = this.utilService.getChainLlamaPlatforms(); const tokens = await this.databaseService.getCoingeckoTokens( this.llamaTokenStart, @@ -159,10 +160,10 @@ export class TokenService { } async getTokenPrice(chainId: number, tokenAddress?: string) { - const cmcPlatform = this.getChainConfigByChainId(chainId)?.extra?.cmcPlatform; + const cmcPlatform = this.utilService.getChainConfigByChainId(chainId)?.extra?.cmcPlatform; const cmcToken = await this.databaseService.getToken(cmcPlatform, tokenAddress); - const llamaPlatform = this.getChainConfigByChainId(chainId)?.extra?.llamaPlatform; + const llamaPlatform = this.utilService.getChainConfigByChainId(chainId)?.extra?.llamaPlatform; const llamaToken = await this.databaseService.getCoingeckoToken( chainId, llamaPlatform, @@ -191,36 +192,4 @@ export class TokenService { return Object.values(llamaRes.value.coins ?? {})?.[0]?.price; } } - - public getFormattedAddress(chainId?: number, address?: string) { - const chainInfo = chains.find((e) => e.id === chainId); - if (chainInfo?.chainType !== 'evm') { - return address; - } - return address?.toLowerCase(); - } - - public getChainConfigByCmcPlatform(platform: string) { - return chains.find((e) => e.extra?.cmcPlatform === platform); - } - - public getChainConfigByLlamaPlatform(platform: string) { - return chains.find((e) => e.extra?.llamaPlatform === platform); - } - - public getChainConfigByChainId(chainId: number) { - return chains.find((e) => e.id === chainId); - } - - public getChainCmcPlatforms() { - return chains.filter((e) => e.extra?.cmcPlatform).map((e) => e.extra?.cmcPlatform); - } - - public getChainLlamaPlatforms() { - return chains.filter((e) => e.extra?.llamaPlatform).map((e) => e.extra?.llamaPlatform); - } - - public getChainIds() { - return chains.map((e) => e.id); - } } diff --git a/apps/canonical-bridge-server/src/shared/util/util.service.ts b/apps/canonical-bridge-server/src/shared/util/util.service.ts index 0119947f..d1ebc746 100644 --- a/apps/canonical-bridge-server/src/shared/util/util.service.ts +++ b/apps/canonical-bridge-server/src/shared/util/util.service.ts @@ -1,3 +1,4 @@ +import { chains } from '@/common/constants/chains'; import { Injectable, Logger } from '@nestjs/common'; import { AxiosRequestConfig } from '@nestjs/terminus/dist/health-indicator/http/axios.interfaces'; @@ -18,4 +19,36 @@ export class UtilService { // todo return Array.isArray(res) ? res.map((r) => r.result || r) : res.result || res.data || res; } + + public getFormattedAddress(chainId?: number, address?: string) { + const chainInfo = chains.find((e) => e.id === chainId); + if (chainInfo?.chainType !== 'evm') { + return address; + } + return address?.toLowerCase(); + } + + public getChainConfigByCmcPlatform(platform: string) { + return chains.find((e) => e.extra?.cmcPlatform === platform); + } + + public getChainConfigByLlamaPlatform(platform: string) { + return chains.find((e) => e.extra?.llamaPlatform === platform); + } + + public getChainConfigByChainId(chainId: number) { + return chains.find((e) => e.id === chainId); + } + + public getChainCmcPlatforms() { + return chains.filter((e) => e.extra?.cmcPlatform).map((e) => e.extra?.cmcPlatform); + } + + public getChainLlamaPlatforms() { + return chains.filter((e) => e.extra?.llamaPlatform).map((e) => e.extra?.llamaPlatform); + } + + public getChainIds() { + return chains.map((e) => e.id); + } }