@@ -401,84 +401,91 @@ export class ExplorerAnalytics {
401401 const ret : ExplorerType . GenericTransactionClassification = [ ]
402402 const logs = await em . find ( Entities . EvmLog , { transaction : { hash } } , { populate : [ 'transaction' ] } )
403403 for ( const log of logs ) {
404- let oglog : Entities . EvmLog | null = null
405- if (
406- log . name == EVENTS . ASSET_MANAGER . REDEMPTION_REQUESTED
407- || log . name == EVENTS . ASSET_MANAGER . COLLATERAL_RESERVED
408- || log . name == EVENTS . ASSET_MANAGER . TRANSFER_TO_CORE_VAULT_STARTED
409- || log . name == EVENTS . ASSET_MANAGER . RETURN_FROM_CORE_VAULT_REQUESTED
410- || log . name == EVENTS . ASSET_MANAGER . SELF_MINT
411- || log . name == EVENTS . ASSET_MANAGER . UNDERLYING_BALANCE_TOPPED_UP
412- || log . name == EVENTS . ASSET_MANAGER . UNDERLYING_WITHDRAWAL_ANNOUNCED
413- ) {
414- oglog = log
415- // core vault transfers
416- } else if ( log . name == EVENTS . ASSET_MANAGER . TRANSFER_TO_CORE_VAULT_SUCCESSFUL ) {
417- oglog = await em . findOneOrFail ( Entities . TransferToCoreVaultSuccessful ,
404+ const oglog = await this . nativeEventClassification ( em , log )
405+ if ( oglog == null ) continue
406+ ret . push ( {
407+ eventName : log . name ,
408+ transactionHash : oglog . transaction . hash
409+ } )
410+ }
411+ return ret
412+ }
413+
414+ protected async nativeEventClassification ( em : EntityManager , log : Entities . EvmLog ) : Promise < Entities . EvmLog | null > {
415+ switch ( log . name ) {
416+ case EVENTS . ASSET_MANAGER . COLLATERAL_RESERVED :
417+ return log
418+ case EVENTS . ASSET_MANAGER . REDEMPTION_REQUESTED :
419+ return log
420+ case EVENTS . ASSET_MANAGER . TRANSFER_TO_CORE_VAULT_STARTED :
421+ return log
422+ case EVENTS . ASSET_MANAGER . RETURN_FROM_CORE_VAULT_REQUESTED :
423+ return log
424+ case EVENTS . ASSET_MANAGER . SELF_MINT :
425+ return log
426+ case EVENTS . ASSET_MANAGER . UNDERLYING_BALANCE_TOPPED_UP :
427+ return log
428+ case EVENTS . ASSET_MANAGER . UNDERLYING_WITHDRAWAL_ANNOUNCED :
429+ return log
430+ case EVENTS . ASSET_MANAGER . TRANSFER_TO_CORE_VAULT_SUCCESSFUL :
431+ return em . findOneOrFail ( Entities . TransferToCoreVaultSuccessful ,
418432 { evmLog : log } , { populate : [ 'transferToCoreVaultStarted.evmLog.transaction' ] }
419433 ) . then ( x => x . transferToCoreVaultStarted . evmLog )
420- } else if ( log . name == EVENTS . ASSET_MANAGER . TRANSFER_TO_CORE_VAULT_DEFAULTED ) {
421- oglog = await em . findOneOrFail ( Entities . TransferToCoreVaultDefaulted ,
434+ case EVENTS . ASSET_MANAGER . TRANSFER_TO_CORE_VAULT_DEFAULTED :
435+ return em . findOneOrFail ( Entities . TransferToCoreVaultDefaulted ,
422436 { evmLog : log } , { populate : [ 'transferToCoreVaultStarted.evmLog.transaction' ] }
423437 ) . then ( x => x . transferToCoreVaultStarted . evmLog )
424- // core vault returns
425- } else if ( log . name == EVENTS . ASSET_MANAGER . RETURN_FROM_CORE_VAULT_CONFIRMED ) {
426- oglog = await em . findOneOrFail ( Entities . ReturnFromCoreVaultConfirmed ,
438+ case EVENTS . ASSET_MANAGER . RETURN_FROM_CORE_VAULT_CONFIRMED :
439+ return em . findOneOrFail ( Entities . ReturnFromCoreVaultConfirmed ,
427440 { evmLog : log } , { populate : [ 'returnFromCoreVaultRequested.evmLog.transaction' ] }
428441 ) . then ( x => x . returnFromCoreVaultRequested . evmLog )
429- } else if ( log . name == EVENTS . ASSET_MANAGER . RETURN_FROM_CORE_VAULT_CANCELLED ) {
430- oglog = await em . findOneOrFail ( Entities . ReturnFromCoreVaultCancelled ,
442+ case EVENTS . ASSET_MANAGER . RETURN_FROM_CORE_VAULT_CANCELLED :
443+ return em . findOneOrFail ( Entities . ReturnFromCoreVaultCancelled ,
431444 { evmLog : log } , { populate : [ 'returnFromCoreVaultRequested.evmLog.transaction' ] }
432445 ) . then ( x => x . returnFromCoreVaultRequested . evmLog )
433- // mintings
434- } else if ( log . name == EVENTS . ASSET_MANAGER . MINTING_EXECUTED ) {
435- oglog = await em . findOneOrFail ( Entities . MintingExecuted ,
446+ case EVENTS . ASSET_MANAGER . MINTING_EXECUTED :
447+ return em . findOneOrFail ( Entities . MintingExecuted ,
436448 { evmLog : log } , { populate : [ 'collateralReserved.evmLog.transaction' ] }
437449 ) . then ( x => x . collateralReserved . evmLog )
438- } else if ( log . name == EVENTS . ASSET_MANAGER . MINTING_PAYMENT_DEFAULT ) {
439- oglog = await em . findOneOrFail ( Entities . MintingPaymentDefault ,
450+ case EVENTS . ASSET_MANAGER . MINTING_PAYMENT_DEFAULT :
451+ return em . findOneOrFail ( Entities . MintingPaymentDefault ,
440452 { evmLog : log } , { populate : [ 'collateralReserved.evmLog.transaction' ] }
441453 ) . then ( x => x . collateralReserved . evmLog )
442- } else if ( log . name == EVENTS . ASSET_MANAGER . COLLATERAL_RESERVATION_DELETED ) {
443- oglog = await em . findOneOrFail ( Entities . CollateralReservationDeleted ,
454+ case EVENTS . ASSET_MANAGER . COLLATERAL_RESERVATION_DELETED :
455+ return em . findOneOrFail ( Entities . CollateralReservationDeleted ,
444456 { evmLog : log } , { populate : [ 'collateralReserved.evmLog.transaction' ] }
445457 ) . then ( x => x . collateralReserved . evmLog )
446- // redemptions
447- } else if ( log . name == EVENTS . ASSET_MANAGER . REDEMPTION_PERFORMED ) {
448- oglog = await em . findOneOrFail ( Entities . RedemptionPerformed ,
458+ case EVENTS . ASSET_MANAGER . REDEMPTION_PERFORMED :
459+ return em . findOneOrFail ( Entities . RedemptionPerformed ,
449460 { evmLog : log } , { populate : [ 'redemptionRequested.evmLog.transaction' ] }
450461 ) . then ( x => x . redemptionRequested . evmLog )
451- } else if ( log . name == EVENTS . ASSET_MANAGER . REDEMPTION_DEFAULT ) {
452- oglog = await em . findOneOrFail ( Entities . RedemptionDefault ,
462+ case EVENTS . ASSET_MANAGER . REDEMPTION_DEFAULT :
463+ return em . findOneOrFail ( Entities . RedemptionDefault ,
453464 { evmLog : log } , { populate : [ 'redemptionRequested.evmLog.transaction' ] }
454465 ) . then ( x => x . redemptionRequested . evmLog )
455- } else if ( log . name == EVENTS . ASSET_MANAGER . REDEMPTION_REJECTED ) {
456- oglog = await em . findOneOrFail ( Entities . RedemptionRejected ,
466+ case EVENTS . ASSET_MANAGER . REDEMPTION_REJECTED :
467+ return em . findOneOrFail ( Entities . RedemptionRejected ,
457468 { evmLog : log } , { populate : [ 'redemptionRequested.evmLog.transaction' ] }
458469 ) . then ( x => x . redemptionRequested . evmLog )
459- } else if ( log . name == EVENTS . ASSET_MANAGER . REDEMPTION_PAYMENT_FAILED ) {
460- oglog = await em . findOneOrFail ( Entities . RedemptionPaymentFailed ,
470+ case EVENTS . ASSET_MANAGER . REDEMPTION_PAYMENT_FAILED :
471+ return em . findOneOrFail ( Entities . RedemptionPaymentFailed ,
461472 { evmLog : log } , { populate : [ 'redemptionRequested.evmLog.transaction' ] }
462473 ) . then ( x => x . redemptionRequested . evmLog )
463- } else if ( log . name == EVENTS . ASSET_MANAGER . REDEMPTION_PAYMENT_BLOCKED ) {
464- oglog = await em . findOneOrFail ( Entities . RedemptionPaymentBlocked ,
474+ case EVENTS . ASSET_MANAGER . REDEMPTION_PAYMENT_BLOCKED :
475+ return em . findOneOrFail ( Entities . RedemptionPaymentBlocked ,
465476 { evmLog : log } , { populate : [ 'redemptionRequested.evmLog.transaction' ] }
466477 ) . then ( x => x . redemptionRequested . evmLog )
467- // agent withdrawal
468- } else if ( log . name == EVENTS . ASSET_MANAGER . UNDERLYING_WITHDRAWAL_CONFIRMED ) {
469- oglog = await em . findOneOrFail ( Entities . UnderlyingWithdrawalConfirmed ,
478+ case EVENTS . ASSET_MANAGER . UNDERLYING_WITHDRAWAL_CONFIRMED :
479+ return em . findOneOrFail ( Entities . UnderlyingWithdrawalConfirmed ,
470480 { evmLog : log } , { populate : [ 'underlyingWithdrawalAnnounced.evmLog.transaction' ] }
471481 ) . then ( x => x . underlyingWithdrawalAnnounced . evmLog )
472- } else if ( log . name == EVENTS . ASSET_MANAGER . UNDERLYING_WITHDRAWAL_CANCELLED ) {
473- oglog = await em . findOneOrFail ( Entities . UnderlyingWithdrawalCancelled ,
482+ case EVENTS . ASSET_MANAGER . UNDERLYING_WITHDRAWAL_CANCELLED :
483+ return em . findOneOrFail ( Entities . UnderlyingWithdrawalCancelled ,
474484 { evmLog : log } , { populate : [ 'underlyingWithdrawalAnnounced.evmLog.transaction' ] }
475485 ) . then ( x => x . underlyingWithdrawalAnnounced . evmLog )
476- } else {
477- continue
478- }
479- ret . push ( { eventName : log . name , transactionHash : oglog . transaction . hash } )
486+ default :
487+ return null
480488 }
481- return ret
482489 }
483490
484491 protected async rippleTransactionClassification ( em : EntityManager , hash : string ) : Promise < ExplorerType . GenericTransactionClassification > {
0 commit comments