Skip to content

Commit 0b94ea0

Browse files
committed
fix: #6 platform event handling
1 parent 48c009f commit 0b94ea0

File tree

1 file changed

+26
-23
lines changed

1 file changed

+26
-23
lines changed

src/eventParser.js

Lines changed: 26 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,29 +4,32 @@ export function parseEvent(schema, event) {
44
const allFields = schema.type.getFields();
55
const replayId = decodeReplayId(event.replayId);
66
const payload = schema.type.fromBuffer(event.event.payload); // This schema is the same which we retreived earlier in the GetSchema rpc.
7-
try {
8-
payload.ChangeEventHeader.nulledFields = parseFieldBitmaps(
9-
allFields,
10-
payload.ChangeEventHeader.nulledFields
11-
);
12-
} catch (error) {
13-
throw new Error('Failed to parse nulledFields', { cause: error });
14-
}
15-
try {
16-
payload.ChangeEventHeader.diffFields = parseFieldBitmaps(
17-
allFields,
18-
payload.ChangeEventHeader.diffFields
19-
);
20-
} catch (error) {
21-
throw new Error('Failed to parse diffFields', { cause: error });
22-
}
23-
try {
24-
payload.ChangeEventHeader.changedFields = parseFieldBitmaps(
25-
allFields,
26-
payload.ChangeEventHeader.changedFields
27-
);
28-
} catch (error) {
29-
throw new Error('Failed to parse changedFields', { cause: error });
7+
// Parse CDC header if available
8+
if (payload.ChangeEventHeader) {
9+
try {
10+
payload.ChangeEventHeader.nulledFields = parseFieldBitmaps(
11+
allFields,
12+
payload.ChangeEventHeader.nulledFields
13+
);
14+
} catch (error) {
15+
throw new Error('Failed to parse nulledFields', { cause: error });
16+
}
17+
try {
18+
payload.ChangeEventHeader.diffFields = parseFieldBitmaps(
19+
allFields,
20+
payload.ChangeEventHeader.diffFields
21+
);
22+
} catch (error) {
23+
throw new Error('Failed to parse diffFields', { cause: error });
24+
}
25+
try {
26+
payload.ChangeEventHeader.changedFields = parseFieldBitmaps(
27+
allFields,
28+
payload.ChangeEventHeader.changedFields
29+
);
30+
} catch (error) {
31+
throw new Error('Failed to parse changedFields', { cause: error });
32+
}
3033
}
3134
return {
3235
replayId,

0 commit comments

Comments
 (0)