diff --git a/src/indexer/events/handlePoolMetadataUpdated.ts b/src/indexer/events/handlePoolMetadataUpdated.ts new file mode 100644 index 0000000..6924b5e --- /dev/null +++ b/src/indexer/events/handlePoolMetadataUpdated.ts @@ -0,0 +1,36 @@ +import { EventHandlerArgs, Indexer } from "chainsauce"; +import { IndexerContext } from "../handleEvent.js"; +import { fetchIpfs } from "../ipfs.js"; +import { abis } from "../../lib/abi/index.js"; + +export async function handlePoolMetadataUpdated( + args: EventHandlerArgs< + Indexer, + "Allo", + "PoolMetadataUpdated" + >, +) { + const { + event, + chainId, + context: { db }, + } = args; + + const { params } = event; + + const metadataCid = params.metadata.pointer; + const metadata = await fetchIpfs(metadataCid); + + try { + db.updateTable("pools") + .set({ + metadataCid, + metadata, + }) + .where("chainId", "=", chainId) + .where("id", "=", params.poolId.toString()) + .execute(); + } catch (err) { + console.warn("DB write error"); + } +} diff --git a/src/indexer/events/index.js b/src/indexer/events/index.js index d90fda1..5abbc9f 100644 --- a/src/indexer/events/index.js +++ b/src/indexer/events/index.js @@ -1,5 +1,6 @@ export { handleProfileCreated } from "./handleProfileCreated.js"; export { handlePoolCreated } from "./handlePoolCreated.js"; +export { handlePoolMetadataUpdated } from "./handlePoolMetadataUpdated.js"; export { handleRegistered } from "./handleRegistered.js"; export { handleUpdatedRegistration } from "./handleUpdatedRegistration.js"; export { handleReviewed } from "./handleReviewed.js"; diff --git a/src/indexer/handleEvent.ts b/src/indexer/handleEvent.ts index 62cc09f..8987c0f 100644 --- a/src/indexer/handleEvent.ts +++ b/src/indexer/handleEvent.ts @@ -7,6 +7,7 @@ import { abis } from "../lib/abi/index.js"; import { handleProfileCreated, handlePoolCreated, + handlePoolMetadataUpdated, handleRegistered, handleUpdatedRegistration, handleReviewed, @@ -41,6 +42,12 @@ async function handleEvent( break; } + case "PoolMetadataUpdated": { + await handlePoolMetadataUpdated({ ...args, event }); + + break; + } + case "Registered": { await handleRegistered({ ...args, event });