Skip to content

Commit fbbcd72

Browse files
committed
add ps_lsst_value_added_smt.yaml
1 parent af4f103 commit fbbcd72

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# https://cloud.google.com/pubsub/docs/smts/create-topic-smt#create
2+
- javascriptUdf:
3+
code: >
4+
function reformatValueAddedAlert(message, metadata) {
5+
const data = JSON.parse(message.data);
6+
const alertLite = data["alert_lite"] || {};
7+
const valueAdded = data["value_added"] || {};
8+
9+
// Whitelist fields for diaObject
10+
const diaObjectFields = ["diaObjectId"];
11+
const ssSourceFields = ["ssObjectId"];
12+
const diaSourceId = ["diaSourceId"];
13+
14+
// Extract whitelisted fields
15+
function extractFields(obj, fields) {
16+
if (!obj) return obj;
17+
const extracted = {};
18+
for (const f of fields) {
19+
if (obj.hasOwnProperty(f)) {
20+
extracted[f] = obj[f];
21+
}
22+
}
23+
return extracted;
24+
}
25+
26+
const flattened = {};
27+
28+
// Extract diaSourceId, diaObjectId and ssObjectId
29+
Object.assign(flattened, extractFields(alertLite["diaObject"], diaObjectFields));
30+
Object.assign(flattened, extractFields(alertLite["ssSource"], ssSourceFields));
31+
Object.assign(flattened, extractFields(alertLite, diaSourceId));
32+
33+
// Spread all fields from value_added into top-level
34+
Object.assign(flattened, valueAdded);
35+
36+
// Replace fields with filtered versions
37+
reformatValueAddedAlert["diaObject"] = extractFields(alertLite["diaObject"], diaObjectFields);
38+
reformatValueAddedAlert["ssSource"] = extractFields(alertLite["ssSource"], ssSourceFields);
39+
40+
// Replace message data
41+
message.data = JSON.stringify(flattened);
42+
return message;
43+
}
44+
functionName: reformatValueAddedAlert

0 commit comments

Comments
 (0)