Skip to content

Commit

Permalink
SERVICES-1877: refactor farm rabbitmq handler
Browse files Browse the repository at this point in the history
Signed-off-by: Claudiu Lataretu <[email protected]>
  • Loading branch information
claudiulataretu committed Oct 3, 2023
1 parent eb21825 commit 8b4dccd
Show file tree
Hide file tree
Showing 3 changed files with 77 additions and 63 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@ import { WINSTON_MODULE_PROVIDER } from 'nest-winston';
import { PUB_SUB } from 'src/services/redis.pubSub.module';
import { farmVersion } from 'src/utils/farm.utils';
import { Logger } from 'winston';
import { FarmVersion } from '../farm/models/farm.model';
import { FarmSetterFactory } from '../farm/farm.setter.factory';
import { FarmAbiFactory } from '../farm/farm.abi.factory';
import { FarmVersion } from '../../farm/models/farm.model';
import { FarmSetterFactory } from '../../farm/farm.setter.factory';
import { FarmAbiFactory } from '../../farm/farm.abi.factory';

@Injectable()
export class RabbitMQFarmHandlerService {
Expand All @@ -34,16 +34,68 @@ export class RabbitMQFarmHandlerService {

async handleEnterFarmEvent(rawEvent: RawEventType): Promise<void> {
const version = farmVersion(rawEvent.address);
let event: BaseFarmEvent;
switch (version) {
case FarmVersion.V1_2:
event = new EnterFarmEventV1_2(rawEvent);
break;
await this.handleEnterFarmEventV1_3(
new EnterFarmEventV1_2(rawEvent),
);
return;
case FarmVersion.V1_3:
event = new EnterFarmEventV1_3(rawEvent);
break;
await this.handleEnterFarmEventV1_3(
new EnterFarmEventV1_3(rawEvent),
);
return;
case FarmVersion.V2:
await this.handleEnterFarmEventV2(
new EnterFarmEventV2(rawEvent),
);
return;
}
}

async handleExitFarmEvent(rawEvent: RawEventType): Promise<void> {
const version = farmVersion(rawEvent.address);
switch (version) {
case FarmVersion.V1_2:
await this.handleExitFarmEventV1_3(
new ExitFarmEventV1_2(rawEvent),
);
return;
case FarmVersion.V1_3:
await this.handleExitFarmEventV1_3(
new ExitFarmEventV1_3(rawEvent),
);
return;
case FarmVersion.V2:
await this.handleExitFarmEventV2(new ExitFarmEventV2(rawEvent));
return;
}
}

async handleRewardsEvent(rawEvent: RawEventType): Promise<void> {
const version = farmVersion(rawEvent.address);
switch (version) {
case FarmVersion.V1_2:
await this.handleClaimRewardsEventV1_3(
new RewardsEventV1_2(rawEvent),
);
return;
case FarmVersion.V1_3:
await this.handleClaimRewardsEventV1_3(
new RewardsEventV1_3(rawEvent),
);
return;
case FarmVersion.V2:
await this.handleClaimRewardsEventV2(
new ClaimRewardsEventV2(rawEvent),
);
return;
}
}

private async handleEnterFarmEventV1_3(
event: BaseFarmEvent,
): Promise<void> {
const cacheKey = await this.farmSetterFactory
.useSetter(event.getAddress())
.setFarmTokenSupply(event.getAddress(), event.farmSupply.toFixed());
Expand All @@ -53,17 +105,7 @@ export class RabbitMQFarmHandlerService {
});
}

async handleExitFarmEvent(rawEvent: RawEventType): Promise<void> {
const version = farmVersion(rawEvent.address);
let event: BaseFarmEvent;
switch (version) {
case FarmVersion.V1_2:
event = new ExitFarmEventV1_2(rawEvent);
break;
case FarmVersion.V1_3:
event = new ExitFarmEventV1_3(rawEvent);
break;
}
private async handleExitFarmEventV1_3(event: BaseFarmEvent): Promise<void> {
const cacheKey = await this.farmSetterFactory
.useSetter(event.address)
.setFarmTokenSupply(event.address, event.farmSupply.toFixed());
Expand All @@ -73,18 +115,9 @@ export class RabbitMQFarmHandlerService {
});
}

async handleRewardsEvent(rawEvent: RawEventType): Promise<void> {
const version = farmVersion(rawEvent.address);
let event: BaseRewardsEvent;
switch (version) {
case FarmVersion.V1_2:
event = new RewardsEventV1_2(rawEvent);
break;
case FarmVersion.V1_3:
event = new RewardsEventV1_3(rawEvent);
break;
}

private async handleClaimRewardsEventV1_3(
event: BaseRewardsEvent,
): Promise<void> {
const rewardPerShare = await this.farmAbiFactory
.useAbi(event.address)
.rewardPerShare(event.address);
Expand All @@ -98,9 +131,9 @@ export class RabbitMQFarmHandlerService {
});
}

async handleEnterFarmEventV2(rawEvent: RawEventType): Promise<void> {
const event = new EnterFarmEventV2(rawEvent);

private async handleEnterFarmEventV2(
event: EnterFarmEventV2,
): Promise<void> {
const cacheKeys = await Promise.all([
this.farmSetterFactory
.useSetter(event.address)
Expand All @@ -110,9 +143,7 @@ export class RabbitMQFarmHandlerService {
await this.deleteCacheKeys(cacheKeys);
}

async handleExitFarmEventV2(rawEvent: RawEventType): Promise<void> {
const event = new ExitFarmEventV2(rawEvent);

private async handleExitFarmEventV2(event: ExitFarmEventV2): Promise<void> {
const cacheKeys = await Promise.all([
this.farmSetterFactory
.useSetter(event.address)
Expand All @@ -122,9 +153,9 @@ export class RabbitMQFarmHandlerService {
await this.deleteCacheKeys(cacheKeys);
}

async handleClaimRewardsEventV2(rawEvent: RawEventType): Promise<void> {
const event = new ClaimRewardsEventV2(rawEvent);

private async handleClaimRewardsEventV2(
event: ClaimRewardsEventV2,
): Promise<void> {
const cacheKeys = await Promise.all([
this.farmSetterFactory
.useSetter(event.address)
Expand Down
27 changes: 5 additions & 22 deletions src/modules/rabbitmq/rabbitmq.consumer.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { Inject, Injectable } from '@nestjs/common';
import { WINSTON_MODULE_PROVIDER } from 'nest-winston';
import { Logger } from 'winston';
import { RabbitMQFarmHandlerService } from './rabbitmq.farm.handler.service';
import { RabbitMQFarmHandlerService } from './handlers/farm.handler.service';
import { RabbitMQProxyHandlerService } from './rabbitmq.proxy.handler.service';
import { CompetingRabbitConsumer } from './rabbitmq.consumers';
import { scAddress } from 'src/config';
Expand Down Expand Up @@ -167,31 +167,14 @@ export class RabbitMqConsumer {
this.updateIngestData(eventData);
break;
case FARM_EVENTS.ENTER_FARM:
if (farmVersion(rawEvent.address) === FarmVersion.V2) {
await this.wsFarmHandler.handleEnterFarmEventV2(
rawEvent,
);
} else {
await this.wsFarmHandler.handleEnterFarmEvent(rawEvent);
}
await this.wsFarmHandler.handleEnterFarmEvent(rawEvent);
break;
case FARM_EVENTS.EXIT_FARM:
if (farmVersion(rawEvent.address) === FarmVersion.V2) {
await this.wsFarmHandler.handleExitFarmEventV2(
rawEvent,
);
} else {
await this.wsFarmHandler.handleExitFarmEvent(rawEvent);
}
await this.wsFarmHandler.handleExitFarmEvent(rawEvent);

break;
case FARM_EVENTS.CLAIM_REWARDS:
if (farmVersion(rawEvent.address) === FarmVersion.V2) {
await this.wsFarmHandler.handleClaimRewardsEventV2(
rawEvent,
);
} else {
await this.wsFarmHandler.handleRewardsEvent(rawEvent);
}
await this.wsFarmHandler.handleRewardsEvent(rawEvent);
break;
case FARM_EVENTS.COMPOUND_REWARDS:
await this.wsFarmHandler.handleRewardsEvent(rawEvent);
Expand Down
2 changes: 1 addition & 1 deletion src/modules/rabbitmq/rabbitmq.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { DynamicModule, Module } from '@nestjs/common';
import { CommonAppModule } from 'src/common.app.module';
import { FarmModule } from '../farm/farm.module';
import { PairModule } from '../pair/pair.module';
import { RabbitMQFarmHandlerService } from './rabbitmq.farm.handler.service';
import { RabbitMQFarmHandlerService } from './handlers/farm.handler.service';
import { RabbitMQProxyHandlerService } from './rabbitmq.proxy.handler.service';
import { RabbitMqConsumer } from './rabbitmq.consumer';
import { RabbitMQEsdtTokenHandlerService } from './rabbitmq.esdtToken.handler.service';
Expand Down

0 comments on commit 8b4dccd

Please sign in to comment.