Skip to content

Commit 7a80373

Browse files
committed
use mappings instead of if checking
1 parent d526062 commit 7a80373

2 files changed

Lines changed: 43 additions & 180 deletions

File tree

src/components/Indexer/processor.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ import {
5959
VersionedDDO
6060
} from '@oceanprotocol/ddo-js'
6161
import { checkCredentialOnAccessList } from '../../utils/credentials.js'
62-
class BaseEventProcessor {
62+
export abstract class BaseEventProcessor {
6363
protected networkId: number
6464

6565
constructor(chainId: number) {
@@ -396,6 +396,14 @@ class BaseEventProcessor {
396396

397397
return ddo
398398
}
399+
400+
public abstract processEvent(
401+
event: ethers.Log,
402+
chainId: number,
403+
signer: Signer,
404+
provider: JsonRpcApiProvider,
405+
eventName?: string
406+
): Promise<any>
399407
}
400408

401409
export class MetadataEventProcessor extends BaseEventProcessor {
@@ -733,6 +741,7 @@ export class MetadataStateEventProcessor extends BaseEventProcessor {
733741
async processEvent(
734742
event: ethers.Log,
735743
chainId: number,
744+
_signer: Signer,
736745
provider: JsonRpcApiProvider
737746
): Promise<any> {
738747
INDEXER_LOGGER.logMessage(`Processing metadata state event...`, true)

src/components/Indexer/utils.ts

Lines changed: 33 additions & 179 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ import {
2121
ExchangeDeactivatedEventProcessor,
2222
ExchangeRateChangedEventProcessor,
2323
ExchangeCreatedEventProcessor,
24-
DispenserCreatedEventProcessor
24+
DispenserCreatedEventProcessor,
25+
BaseEventProcessor
2526
} from './processor.js'
2627
import { INDEXER_LOGGER } from '../../utils/logging/common.js'
2728
import { fetchEventFromTransaction } from '../../utils/util.js'
@@ -36,105 +37,37 @@ import { createHash } from 'crypto'
3637
import { ServicePrice } from '../../@types/IndexedMetadata.js'
3738
import { 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

14073
export 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

Comments
 (0)