@@ -21,7 +21,8 @@ import {
2121 ExchangeDeactivatedEventProcessor ,
2222 ExchangeRateChangedEventProcessor ,
2323 ExchangeCreatedEventProcessor ,
24- DispenserCreatedEventProcessor
24+ DispenserCreatedEventProcessor ,
25+ BaseEventProcessor
2526} from './processor.js'
2627import { INDEXER_LOGGER } from '../../utils/logging/common.js'
2728import { fetchEventFromTransaction } from '../../utils/util.js'
@@ -36,105 +37,37 @@ import { createHash } from 'crypto'
3637import { ServicePrice } from '../../@types/IndexedMetadata.js'
3738import { VersionedDDO } from '@oceanprotocol/ddo-js'
3839
39- let metadataEventProccessor : MetadataEventProcessor
40- let metadataStateEventProcessor : MetadataStateEventProcessor
41- let orderReusedEventProcessor : OrderReusedEventProcessor
42- let orderStartedEventProcessor : OrderStartedEventProcessor
43- let dispenserActivatedEventProcessor : DispenserActivatedEventProcessor
44- let dispenserDeactivatedEventProcessor : DispenserDeactivatedEventProcessor
45- let exchangeCreatedEventProcessor : ExchangeCreatedEventProcessor
46- let exchangeActivatedEventProcessor : ExchangeActivatedEventProcessor
47- let exchangeDeactivatedEventProcessor : ExchangeDeactivatedEventProcessor
48- let exchangeNewRateEventProcessor : ExchangeRateChangedEventProcessor
49- let dispenserCreatedEventProcessor : DispenserCreatedEventProcessor
50-
51- function getExchangeCreatedEventProcessor (
52- chainId : number
53- ) : ExchangeCreatedEventProcessor {
54- if ( ! exchangeCreatedEventProcessor ) {
55- exchangeCreatedEventProcessor = new ExchangeCreatedEventProcessor ( chainId )
56- }
57- return exchangeCreatedEventProcessor
58- }
59-
60- function getMetadataEventProcessor ( chainId : number ) : MetadataEventProcessor {
61- if ( ! metadataEventProccessor ) {
62- metadataEventProccessor = new MetadataEventProcessor ( chainId )
63- }
64- return metadataEventProccessor
65- }
40+ type ProcessorConstructor = new ( chainId : number ) => BaseEventProcessor
6641
67- function getMetadataStateEventProcessor ( chainId : number ) : MetadataStateEventProcessor {
68- if ( ! metadataStateEventProcessor ) {
69- metadataStateEventProcessor = new MetadataStateEventProcessor ( chainId )
70- }
71- return metadataStateEventProcessor
72- }
73-
74- function getOrderReusedEventProcessor ( chainId : number ) : OrderReusedEventProcessor {
75- if ( ! orderReusedEventProcessor ) {
76- orderReusedEventProcessor = new OrderReusedEventProcessor ( chainId )
77- }
78- return orderReusedEventProcessor
79- }
80-
81- function getOrderStartedEventProcessor ( chainId : number ) : OrderStartedEventProcessor {
82- if ( ! orderStartedEventProcessor ) {
83- orderStartedEventProcessor = new OrderStartedEventProcessor ( chainId )
84- }
85- return orderStartedEventProcessor
86- }
87-
88- function getDispenserCreatedEventProcessor (
89- chainId : number
90- ) : DispenserCreatedEventProcessor {
91- if ( ! dispenserCreatedEventProcessor ) {
92- dispenserCreatedEventProcessor = new DispenserCreatedEventProcessor ( chainId )
93- }
94- return dispenserCreatedEventProcessor
95- }
96-
97- function getDispenserActivatedEventProcessor (
98- chainId : number
99- ) : DispenserActivatedEventProcessor {
100- if ( ! dispenserActivatedEventProcessor ) {
101- dispenserActivatedEventProcessor = new DispenserActivatedEventProcessor ( chainId )
102- }
103- return dispenserActivatedEventProcessor
42+ const EVENT_PROCESSOR_MAP : Record < string , ProcessorConstructor > = {
43+ [ EVENTS . METADATA_CREATED ] : MetadataEventProcessor ,
44+ [ EVENTS . METADATA_UPDATED ] : MetadataEventProcessor ,
45+ [ EVENTS . METADATA_STATE ] : MetadataStateEventProcessor ,
46+ [ EVENTS . ORDER_STARTED ] : OrderStartedEventProcessor ,
47+ [ EVENTS . ORDER_REUSED ] : OrderReusedEventProcessor ,
48+ [ EVENTS . DISPENSER_CREATED ] : DispenserCreatedEventProcessor ,
49+ [ EVENTS . DISPENSER_ACTIVATED ] : DispenserActivatedEventProcessor ,
50+ [ EVENTS . DISPENSER_DEACTIVATED ] : DispenserDeactivatedEventProcessor ,
51+ [ EVENTS . EXCHANGE_CREATED ] : ExchangeCreatedEventProcessor ,
52+ [ EVENTS . EXCHANGE_ACTIVATED ] : ExchangeActivatedEventProcessor ,
53+ [ EVENTS . EXCHANGE_DEACTIVATED ] : ExchangeDeactivatedEventProcessor ,
54+ [ EVENTS . EXCHANGE_RATE_CHANGED ] : ExchangeRateChangedEventProcessor
10455}
10556
106- function getDispenserDeactivatedEventProcessor (
107- chainId : number
108- ) : DispenserDeactivatedEventProcessor {
109- if ( ! dispenserDeactivatedEventProcessor ) {
110- dispenserDeactivatedEventProcessor = new DispenserDeactivatedEventProcessor ( chainId )
111- }
112- return dispenserDeactivatedEventProcessor
113- }
57+ const processorInstances = new Map < string , BaseEventProcessor > ( )
11458
115- function getExchangeActivatedEventProcessor (
116- chainId : number
117- ) : ExchangeActivatedEventProcessor {
118- if ( ! exchangeActivatedEventProcessor ) {
119- exchangeActivatedEventProcessor = new ExchangeActivatedEventProcessor ( chainId )
120- }
121- return exchangeActivatedEventProcessor
122- }
59+ function getEventProcessor ( eventType : string , chainId : number ) : BaseEventProcessor {
60+ const cacheKey = `${ eventType } -${ chainId } `
12361
124- function getExchangeDeactivatedEventProcessor (
125- chainId : number
126- ) : ExchangeDeactivatedEventProcessor {
127- if ( ! exchangeDeactivatedEventProcessor ) {
128- exchangeDeactivatedEventProcessor = new ExchangeDeactivatedEventProcessor ( chainId )
62+ if ( ! processorInstances . has ( cacheKey ) ) {
63+ const ProcessorClass = EVENT_PROCESSOR_MAP [ eventType ]
64+ if ( ! ProcessorClass ) {
65+ throw new Error ( `No processor found for event type: ${ eventType } ` )
66+ }
67+ processorInstances . set ( cacheKey , new ProcessorClass ( chainId ) )
12968 }
130- return exchangeDeactivatedEventProcessor
131- }
13269
133- function getExchangeNewRateEventProcessor ( chainId : number ) {
134- if ( ! exchangeNewRateEventProcessor ) {
135- exchangeNewRateEventProcessor = new ExchangeRateChangedEventProcessor ( chainId )
136- }
137- return exchangeNewRateEventProcessor
70+ return processorInstances . get ( cacheKey )
13871}
13972
14073export const getContractAddress = ( chainId : number , contractName : string ) : string => {
@@ -315,100 +248,21 @@ export const processChunkLogs = async (
315248 } // end if (allowedValidatorsList) {
316249 } // end if if (checkMetadataValidated) {
317250 }
318- if (
319- event . type === EVENTS . METADATA_CREATED ||
320- event . type === EVENTS . METADATA_UPDATED
321- ) {
322- const processor = getMetadataEventProcessor ( chainId )
323- const rets = await processor . processEvent (
324- log ,
325- chainId ,
326- signer ,
327- provider ,
328- event . type
329- )
330- if ( rets ) storeEvents [ event . type ] = rets
331- } else if ( event . type === EVENTS . METADATA_STATE ) {
332- const processor = getMetadataStateEventProcessor ( chainId )
333- storeEvents [ event . type ] = await processor . processEvent ( log , chainId , provider )
334- } else if ( event . type === EVENTS . EXCHANGE_CREATED ) {
335- const processor = getExchangeCreatedEventProcessor ( chainId )
336- INDEXER_LOGGER . logMessage ( `log for exchange created: ${ JSON . stringify ( log ) } ` )
337- storeEvents [ event . type ] = await processor . processEvent (
338- log ,
339- chainId ,
340- signer ,
341- provider
342- )
343- } else if ( event . type === EVENTS . EXCHANGE_RATE_CHANGED ) {
344- const processor = getExchangeNewRateEventProcessor ( chainId )
345- storeEvents [ event . type ] = await processor . processEvent (
346- log ,
347- chainId ,
348- signer ,
349- provider
350- )
351- } else if ( event . type === EVENTS . ORDER_STARTED ) {
352- const processor = getOrderStartedEventProcessor ( chainId )
353- storeEvents [ event . type ] = await processor . processEvent (
354- log ,
355- chainId ,
356- signer ,
357- provider
358- )
359- } else if ( event . type === EVENTS . ORDER_REUSED ) {
360- const processor = getOrderReusedEventProcessor ( chainId )
361- storeEvents [ event . type ] = await processor . processEvent (
362- log ,
363- chainId ,
364- signer ,
365- provider
366- )
367- } else if ( event . type === EVENTS . TOKEN_URI_UPDATE ) {
251+ if ( event . type === EVENTS . TOKEN_URI_UPDATE ) {
368252 storeEvents [ event . type ] = processTokenUriUpadate ( )
369- } else if ( event . type === EVENTS . DISPENSER_ACTIVATED ) {
370- const processor = getDispenserActivatedEventProcessor ( chainId )
371- storeEvents [ event . type ] = await processor . processEvent (
372- log ,
373- chainId ,
374- signer ,
375- provider
376- )
377- } else if ( event . type === EVENTS . DISPENSER_CREATED ) {
378- const processor = getDispenserCreatedEventProcessor ( chainId )
253+ } else {
254+ const processor = getEventProcessor ( event . type , chainId )
379255 storeEvents [ event . type ] = await processor . processEvent (
380256 log ,
381257 chainId ,
382258 signer ,
383- provider
384- )
385- } else if ( event . type === EVENTS . DISPENSER_DEACTIVATED ) {
386- const processor = getDispenserDeactivatedEventProcessor ( chainId )
387- storeEvents [ event . type ] = await processor . processEvent (
388- log ,
389- chainId ,
390- signer ,
391- provider
392- )
393- } else if ( event . type === EVENTS . EXCHANGE_ACTIVATED ) {
394- const processor = getExchangeActivatedEventProcessor ( chainId )
395- storeEvents [ event . type ] = await processor . processEvent (
396- log ,
397- chainId ,
398- signer ,
399- provider
400- )
401- } else if ( event . type === EVENTS . EXCHANGE_DEACTIVATED ) {
402- const processor = getExchangeDeactivatedEventProcessor ( chainId )
403- storeEvents [ event . type ] = await processor . processEvent (
404- log ,
405- chainId ,
406- signer ,
407- provider
259+ provider ,
260+ event . type
408261 )
409262 }
410263 }
411- } // end for loop
264+ }
265+
412266 return storeEvents
413267 }
414268
0 commit comments