Skip to content

Commit 3d62e84

Browse files
committed
fixed pg.events.listener
1 parent 600f360 commit 3d62e84

4 files changed

Lines changed: 41 additions & 66 deletions

File tree

apps/crawler/src/subscribers/pg.events.listener.ts

Lines changed: 4 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ import {
66
parseBlockNumbersPayload,
77
parseBlockRangePayload,
88
parseTokenRangePayload,
9+
NextBlocksQueryParams,
910
} from './pg.payload.parsers';
10-
import { BlockService } from '../services/block.service';
1111
import { TokenReScanner } from './token.rescaner';
1212
import { CollectionService } from '../services/collection.service';
1313
import { TokenService } from '../services/token/token.service';
@@ -20,24 +20,6 @@ enum PG_EVENTS_CHANNELS {
2020
RESCAN_TOKENS = 'rescan_tokens',
2121
}
2222

23-
type ParsedRescanPayload = {
24-
from: number;
25-
to: number;
26-
pageSize: number;
27-
eventSections: string[];
28-
};
29-
30-
type NextBlocksQueryParams = ParsedRescanPayload & {
31-
page: number;
32-
};
33-
34-
const DEFAULT_EVENT_SECTIONS_FOR_RESCAN = [
35-
'common',
36-
'unique',
37-
'balances',
38-
'appPromotion',
39-
];
40-
4123
@Injectable()
4224
export class PgEventsListener implements OnApplicationBootstrap {
4325
readonly logger = new Logger(PgEventsListener.name);
@@ -52,8 +34,7 @@ export class PgEventsListener implements OnApplicationBootstrap {
5234
private blocksSubscriberService: BlocksSubscriberService,
5335
private collectionService: CollectionService,
5436
private tokenService: TokenService,
55-
private blockService: BlockService,
56-
private tokenReScanner: TokenReScanner,
37+
private tokenReScanner: TokenReScanner
5738
) {
5839
const config = {
5940
host: process.env.POSTGRES_HOST,
@@ -84,6 +65,7 @@ export class PgEventsListener implements OnApplicationBootstrap {
8465
[PG_EVENTS_CHANNELS.STOP_FAST_RESCAN]: async () =>
8566
this.stopFastRescan('manual'),
8667
[PG_EVENTS_CHANNELS.RESCAN_TOKENS]: this.handleRescanTokens,
68+
[PG_EVENTS_CHANNELS.RESCAN_ALL_COLLECTION]: this.rescanAllCollections,
8769
};
8870

8971
const handler = handlersMap[channel];
@@ -129,7 +111,7 @@ export class PgEventsListener implements OnApplicationBootstrap {
129111
return;
130112
}
131113

132-
const parsedPayload = PgEventsListener.parseBlockRangePayload(payload);
114+
const parsedPayload = parseBlockRangePayload(payload);
133115
const { from, to, pageSize, eventSections } = parsedPayload;
134116
this.logger.log(`Going to start fast rescan from ${from} to ${to}`);
135117

@@ -262,33 +244,4 @@ export class PgEventsListener implements OnApplicationBootstrap {
262244
client.release();
263245
this.logger.log(`Rescan for collection ${collectionId} finished`);
264246
}
265-
266-
static parseBlockNumbersPayload(payload: string): number[] {
267-
return payload
268-
.split(',')
269-
.map((n) => parseInt(n.trim(), 10))
270-
.filter((n) => !isNaN(n));
271-
}
272-
273-
static parseBlockRangePayload(payload: string): ParsedRescanPayload {
274-
const [numbersPart, sectionsPart] = payload.split('/');
275-
const numbers = numbersPart.split('-').map((n) => parseInt(n.trim(), 10));
276-
277-
if (numbers.length < 2) {
278-
throw new Error(
279-
`Invalid block range payload ${payload}, expected format: from-to[-pageSize][/section,section]`
280-
);
281-
}
282-
283-
const [from, to, pageSize = 100] = numbers;
284-
285-
const eventSections = sectionsPart
286-
.split(',')
287-
.map((s) => s.trim())
288-
.filter(Boolean);
289-
if (eventSections.length === 0)
290-
eventSections.push(...DEFAULT_EVENT_SECTIONS_FOR_RESCAN);
291-
292-
return { from, to, pageSize, eventSections };
293-
}
294247
}

apps/crawler/src/subscribers/pg.payload.parsers.ts

Lines changed: 34 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,21 @@
1+
const DEFAULT_EVENT_SECTIONS_FOR_RESCAN = [
2+
'common',
3+
'unique',
4+
'balances',
5+
'appPromotion',
6+
];
7+
8+
export type ParsedRescanPayload = {
9+
from: number;
10+
to: number;
11+
pageSize: number;
12+
eventSections: string[];
13+
};
14+
15+
export type NextBlocksQueryParams = ParsedRescanPayload & {
16+
page: number;
17+
};
18+
119
/**
220
* Parse string like "1,2,3,4,5" to array of numbers
321
* @param payload
@@ -14,23 +32,27 @@ export const parseBlockNumbersPayload = (payload: string): number[] => {
1432
* @param payload
1533
*/
1634
export const parseBlockRangePayload = (
17-
payload: string,
18-
): {
19-
from: number;
20-
to: number;
21-
pageSize: number;
22-
} => {
23-
const numbers = payload.split('-').map((n) => parseInt(n.trim(), 10));
35+
payload: string
36+
): ParsedRescanPayload => {
37+
const [numbersPart, sectionsPart] = payload.split('/');
38+
const numbers = numbersPart.split('-').map((n) => parseInt(n.trim(), 10));
2439

2540
if (numbers.length < 2) {
2641
throw new Error(
27-
`Invalid block range payload ${payload}, expected format: from-to or from-to-pageSize`,
42+
`Invalid block range payload ${payload}, expected format: from-to[-pageSize][/section,section]`
2843
);
2944
}
3045

3146
const [from, to, pageSize = 100] = numbers;
3247

33-
return { from, to, pageSize };
48+
const eventSections = sectionsPart
49+
.split(',')
50+
.map((s) => s.trim())
51+
.filter(Boolean);
52+
if (eventSections.length === 0)
53+
eventSections.push(...DEFAULT_EVENT_SECTIONS_FOR_RESCAN);
54+
55+
return { from, to, pageSize, eventSections };
3456
};
3557

3658
/**
@@ -43,21 +65,21 @@ export const parseTokenRangePayload = (payload: string) => {
4365

4466
if (!collectionIdString || !tokenIdsString || !blockNumberString) {
4567
throw new Error(
46-
`Invalid token range payload ${payload}, expected format: collectionId/tokenId,tokenId@blockNumber`,
68+
`Invalid token range payload ${payload}, expected format: collectionId/tokenId,tokenId@blockNumber`
4769
);
4870
}
4971

5072
const collectionId = parseInt(collectionIdString, 10);
5173
if (isNaN(collectionId)) {
5274
throw new Error(
53-
`Invalid token range payload ${payload}, collectionId is not a number`,
75+
`Invalid token range payload ${payload}, collectionId is not a number`
5476
);
5577
}
5678

5779
const blockNumber = parseInt(blockNumberString, 10);
5880
if (isNaN(blockNumber)) {
5981
throw new Error(
60-
`Invalid token range payload ${payload}, blockNumber is not a number`,
82+
`Invalid token range payload ${payload}, blockNumber is not a number`
6183
);
6284
}
6385

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "polkastats-backend-uniquenetwork",
3-
"version": "2.0.95",
3+
"version": "2.0.96",
44
"description": "",
55
"author": "Unique Network Team",
66
"private": true,

0 commit comments

Comments
 (0)