Skip to content

Commit 36f3b94

Browse files
committed
feat: add support for backfilling lend storage messages
1 parent e48efa3 commit 36f3b94

File tree

1 file changed

+35
-1
lines changed

1 file changed

+35
-1
lines changed

packages/shuttle/src/shuttle/messageReconciliation.ts

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,13 @@ export class MessageReconciliation {
4747
startTimestamp?: number,
4848
stopTimestamp?: number,
4949
) {
50-
// Don't reconcile storage lends
5150
for (const type of [
5251
MessageType.CAST_ADD,
5352
MessageType.REACTION_ADD,
5453
MessageType.LINK_ADD,
5554
MessageType.VERIFICATION_ADD_ETH_ADDRESS,
5655
MessageType.USER_DATA_ADD,
56+
MessageType.LEND_STORAGE,
5757
]) {
5858
this.log.debug(`Reconciling messages for FID ${fid} of type ${type}`);
5959
await this.reconcileMessagesOfTypeForFid(fid, type, onHubMessage, onDbMessage, startTimestamp, stopTimestamp);
@@ -149,6 +149,9 @@ export class MessageReconciliation {
149149
case MessageType.USER_DATA_ADD:
150150
fn = this.getAllUserDataMessagesByFidInBatchesOf;
151151
break;
152+
case MessageType.LEND_STORAGE:
153+
fn = this.getAllLendStorageMessagesByFidInBatchesOf;
154+
break;
152155
default:
153156
throw `Unknown message type ${type}`;
154157
}
@@ -177,6 +180,10 @@ export class MessageReconciliation {
177180
return await this.client.getAllUserDataMessagesByFid(request);
178181
}
179182

183+
private async getAllLendStorageMessagesByFid(request: FidTimestampRequest) {
184+
return await this.client.getAllLendStorageMessagesByFid(request);
185+
}
186+
180187
private async *getAllCastMessagesByFidInBatchesOf(
181188
fid: number,
182189
pageSize: number,
@@ -314,6 +321,33 @@ export class MessageReconciliation {
314321
}
315322
}
316323

324+
private async *getAllLendStorageMessagesByFidInBatchesOf(
325+
fid: number,
326+
pageSize: number,
327+
startTimestamp?: number,
328+
stopTimestamp?: number,
329+
) {
330+
let result = await this.getAllLendStorageMessagesByFid({ pageSize, fid, startTimestamp, stopTimestamp });
331+
for (;;) {
332+
if (result.isErr()) {
333+
throw new Error(`Unable to get all lend storage messages for FID ${fid}: ${result.error?.message}`);
334+
}
335+
336+
const { messages, nextPageToken: pageToken } = result.value;
337+
338+
yield messages;
339+
340+
if (!pageToken?.length) break;
341+
result = await this.getAllLendStorageMessagesByFid({
342+
pageSize,
343+
pageToken,
344+
fid,
345+
startTimestamp,
346+
stopTimestamp,
347+
});
348+
}
349+
}
350+
317351
private async allActiveDbMessagesOfTypeForFid(
318352
fid: number,
319353
type: MessageType,

0 commit comments

Comments
 (0)