|
| 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