Skip to content

Commit

Permalink
Merge pull request #12 from ooochoche/main
Browse files Browse the repository at this point in the history
feat: Handle Campaign Updated Event
  • Loading branch information
EjembiEmmanuel authored Dec 1, 2024
2 parents 3ea3590 + d76a86c commit 55976ec
Show file tree
Hide file tree
Showing 4 changed files with 83 additions and 44 deletions.
68 changes: 34 additions & 34 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
"@nestjs/core": "^10.0.0",
"@nestjs/graphql": "^12.2.1",
"@nestjs/platform-express": "^10.0.0",
"@prisma/client": "^5.21.1",
"@prisma/client": "^6.0.0",
"dotenv": "^16.4.5",
"dotenv-cli": "^7.4.2",
"env-var": "^7.5.0",
Expand All @@ -59,7 +59,7 @@
"eslint-plugin-prettier": "^5.0.0",
"jest": "^29.5.0",
"prettier": "^3.0.0",
"prisma": "^5.21.1",
"prisma": "^6.0.0",
"source-map-support": "^0.5.21",
"supertest": "^7.0.0",
"ts-jest": "^29.1.0",
Expand Down
14 changes: 8 additions & 6 deletions prisma/schema.prisma
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,12 @@ datasource db {
url = env("DATABASE_URL")
}

model Campaign {
id Int @id
campaign_address String
campaign_owner String
totalDonations Int
createdAt DateTime
model campaign {
id Int @id @default(autoincrement())
token_id Int
campaign_address String
campaign_owner String
totalDonations Int
token_giver_nft_contract_address String
createdAt DateTime
}
41 changes: 39 additions & 2 deletions src/token-giver-indexer/token-giver-indexer.service.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import { Inject, Injectable, Logger } from '@nestjs/common';
import { FieldElement, v1alpha2 as starknet } from '@apibara/starknet';
import { validateAndParseAddress, hash } from 'starknet';
import { validateAndParseAddress, hash, uint256 } from 'starknet';
import { SharedIndexerService } from 'src/shared-indexer/shared-indexer.service';
import { PrismaService } from 'src/prisma/prisma.service';
import constants from 'src/common/constants';

@Injectable()
Expand All @@ -12,6 +13,9 @@ export class TokenGiverIndexerService {
constructor(
@Inject(SharedIndexerService)
private readonly sharedIndexerService: SharedIndexerService,

@Inject(PrismaService)
private readonly prismaService: PrismaService,
) {
this.eventKeys = [
validateAndParseAddress(
Expand Down Expand Up @@ -71,7 +75,40 @@ export class TokenGiverIndexerService {
private async handleCampaignCreatedEvent(event: starknet.IEvent) {}

// eslint-disable-next-line @typescript-eslint/no-unused-vars
private async handleCampaignUpdatedEvent(event: starknet.IEvent) {}
private async handleCampaignUpdatedEvent(event: starknet.IEvent) {
const [ownerFelt, campaignAddressFelt] = event.keys;

const [tokenIdLow, tokenIdtHigh, tokenGiverNftContractAddressFelt] =
event.data;

const owner = validateAndParseAddress(
`0x${FieldElement.toBigInt(ownerFelt).toString(16)}`,
);

const campaignAddress = validateAndParseAddress(
`0x${FieldElement.toBigInt(campaignAddressFelt).toString(16)}`,
);

const tokenId = Number(
uint256.uint256ToBN({
low: FieldElement.toBigInt(tokenIdLow),
high: FieldElement.toBigInt(tokenIdtHigh),
}),
);

const tokenGiverNftContractAddress = validateAndParseAddress(
`0x${FieldElement.toBigInt(tokenGiverNftContractAddressFelt).toString(16)}`,
);

await this.prismaService.campaign.update({
where: { token_id: tokenId },
data: {
campaign_address: campaignAddress,
campaign_owner: owner,
token_giver_nft_contract_address: tokenGiverNftContractAddress,
},
});
}

// eslint-disable-next-line @typescript-eslint/no-unused-vars
private async handleDonationReceivedEvent(event: starknet.IEvent) {}
Expand Down

0 comments on commit 55976ec

Please sign in to comment.