Skip to content

Commit 73c6f5e

Browse files
committed
[Recombee] Add internalAdditionalData field to actions
1 parent bc948ac commit 73c6f5e

File tree

23 files changed

+159
-18
lines changed

23 files changed

+159
-18
lines changed

packages/destination-actions/src/destinations/recombee/__tests__/__snapshots__/snapshot.test.ts.snap

+7
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ Object {
1515

1616
exports[`Testing snapshot for actions-recombee destination: addBookmark action - required fields 1`] = `
1717
Object {
18+
"additionalData": Object {},
1819
"cascadeCreate": true,
1920
"itemId": "7(iq3vwM",
2021
"userId": "7(iq3vwM",
@@ -38,6 +39,7 @@ Object {
3839

3940
exports[`Testing snapshot for actions-recombee destination: addCartAddition action - required fields 1`] = `
4041
Object {
42+
"additionalData": Object {},
4143
"cascadeCreate": true,
4244
"itemId": "fSK%!$(3gz2peZ!&@L@D",
4345
"userId": "fSK%!$(3gz2peZ!&@L@D",
@@ -60,6 +62,7 @@ Object {
6062

6163
exports[`Testing snapshot for actions-recombee destination: addDetailView action - required fields 1`] = `
6264
Object {
65+
"additionalData": Object {},
6366
"cascadeCreate": true,
6467
"itemId": "VhiOfa#s6#B[CQDV",
6568
"userId": "VhiOfa#s6#B[CQDV",
@@ -96,6 +99,7 @@ Object {
9699
Object {
97100
"method": "POST",
98101
"params": Object {
102+
"additionalData": Object {},
99103
"cascadeCreate": true,
100104
"itemId": "!D2A1H%v%jv&r",
101105
"userId": "!D2A1H%v%jv&r",
@@ -122,6 +126,7 @@ Object {
122126

123127
exports[`Testing snapshot for actions-recombee destination: addRating action - required fields 1`] = `
124128
Object {
129+
"additionalData": Object {},
125130
"cascadeCreate": true,
126131
"itemId": "X9m9Urlsqof(&*PN!s",
127132
"rating": 63040185947914.24,
@@ -180,6 +185,7 @@ Object {
180185

181186
exports[`Testing snapshot for actions-recombee destination: setViewPortion action - required fields 1`] = `
182187
Object {
188+
"additionalData": Object {},
183189
"cascadeCreate": true,
184190
"itemId": "D9^z[P*Zv",
185191
"portion": -42971588743659.52,
@@ -204,6 +210,7 @@ Object {
204210

205211
exports[`Testing snapshot for actions-recombee destination: setViewPortionFromWatchTime action - required fields 1`] = `
206212
Object {
213+
"additionalData": Object {},
207214
"cascadeCreate": true,
208215
"itemId": "gpLV6!FLD#$6^LR77nTN",
209216
"portion": 1,

packages/destination-actions/src/destinations/recombee/addBookmark/__tests__/__snapshots__/snapshot.test.ts.snap

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ Object {
1515

1616
exports[`Testing snapshot for Recombee's addBookmark destination action: required fields 1`] = `
1717
Object {
18+
"additionalData": Object {},
1819
"cascadeCreate": true,
1920
"itemId": "GxFzk&V2a4R8iF62G9]q",
2021
"userId": "GxFzk&V2a4R8iF62G9]q",

packages/destination-actions/src/destinations/recombee/addBookmark/generated-types.ts

+6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/destination-actions/src/destinations/recombee/addBookmark/index.ts

+15-2
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,25 @@ const action: ActionDefinition<Settings, Payload> = {
4646
},
4747
perform: async (request, data) => {
4848
const client = new RecombeeApiClient(data.settings, request)
49-
await client.send(new AddBookmark(data.payload))
49+
await client.send(payloadToBookmark(data.payload))
5050
},
5151
performBatch: async (request, data) => {
5252
const client = new RecombeeApiClient(data.settings, request)
53-
await client.send(new Batch(data.payload.map((payload) => new AddBookmark(payload))))
53+
await client.send(new Batch(data.payload.map((payload) => payloadToBookmark(payload))))
5454
}
5555
}
5656

57+
function payloadToBookmark(payload: Payload): AddBookmark {
58+
return new AddBookmark({
59+
userId: payload.userId,
60+
itemId: payload.itemId,
61+
timestamp: payload.timestamp,
62+
recommId: payload.recommId,
63+
additionalData: {
64+
...(payload.internalAdditionalData ?? {}),
65+
...(payload.additionalData ?? {})
66+
}
67+
})
68+
}
69+
5770
export default action

packages/destination-actions/src/destinations/recombee/addCartAddition/__tests__/__snapshots__/snapshot.test.ts.snap

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ Object {
1717

1818
exports[`Testing snapshot for Recombee's addCartAddition destination action: required fields 1`] = `
1919
Object {
20+
"additionalData": Object {},
2021
"cascadeCreate": true,
2122
"itemId": "E$o]!yX^hLQ^46#)",
2223
"userId": "E$o]!yX^hLQ^46#)",

packages/destination-actions/src/destinations/recombee/addCartAddition/generated-types.ts

+6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/destination-actions/src/destinations/recombee/addCartAddition/index.ts

+7-4
Original file line numberDiff line numberDiff line change
@@ -72,21 +72,24 @@ const action: ActionDefinition<Settings, Payload> = {
7272
},
7373
perform: async (request, data) => {
7474
const client = new RecombeeApiClient(data.settings, request)
75-
await client.send(payloadToInteraction(data.payload))
75+
await client.send(payloadToCartAddition(data.payload))
7676
},
7777
performBatch: async (request, data) => {
7878
const client = new RecombeeApiClient(data.settings, request)
79-
await client.send(new Batch(data.payload.map(payloadToInteraction)))
79+
await client.send(new Batch(data.payload.map(payloadToCartAddition)))
8080
}
8181
}
8282

83-
function payloadToInteraction(payload: Payload): AddCartAddition {
83+
function payloadToCartAddition(payload: Payload): AddCartAddition {
8484
return new AddCartAddition({
8585
userId: payload.userId,
8686
...payload.item,
8787
timestamp: payload.timestamp,
8888
recommId: payload.recommId,
89-
additionalData: payload.additionalData
89+
additionalData: {
90+
...(payload.internalAdditionalData ?? {}),
91+
...(payload.additionalData ?? {})
92+
}
9093
})
9194
}
9295

packages/destination-actions/src/destinations/recombee/addDetailView/__tests__/__snapshots__/snapshot.test.ts.snap

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ Object {
1616

1717
exports[`Testing snapshot for Recombee's addDetailView destination action: required fields 1`] = `
1818
Object {
19+
"additionalData": Object {},
1920
"cascadeCreate": true,
2021
"itemId": "nW8&[lpB",
2122
"userId": "nW8&[lpB",

packages/destination-actions/src/destinations/recombee/addDetailView/generated-types.ts

+6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/destination-actions/src/destinations/recombee/addDetailView/index.ts

+16-2
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,26 @@ const action: ActionDefinition<Settings, Payload> = {
5151
},
5252
perform: async (request, data) => {
5353
const client = new RecombeeApiClient(data.settings, request)
54-
await client.send(new AddDetailView(data.payload))
54+
await client.send(payloadToDetailView(data.payload))
5555
},
5656
performBatch: async (request, data) => {
5757
const client = new RecombeeApiClient(data.settings, request)
58-
await client.send(new Batch(data.payload.map((payload) => new AddDetailView(payload))))
58+
await client.send(new Batch(data.payload.map((payload) => payloadToDetailView(payload))))
5959
}
6060
}
6161

62+
function payloadToDetailView(payload: Payload): AddDetailView {
63+
return new AddDetailView({
64+
userId: payload.userId,
65+
itemId: payload.itemId,
66+
timestamp: payload.timestamp,
67+
duration: payload.duration,
68+
recommId: payload.recommId,
69+
additionalData: {
70+
...(payload.internalAdditionalData ?? {}),
71+
...(payload.additionalData ?? {})
72+
}
73+
})
74+
}
75+
6276
export default action

packages/destination-actions/src/destinations/recombee/addPurchase/__tests__/__snapshots__/snapshot.test.ts.snap

+1
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ Object {
3030
Object {
3131
"method": "POST",
3232
"params": Object {
33+
"additionalData": Object {},
3334
"cascadeCreate": true,
3435
"itemId": "o@fME^0ckHa[VN6e&Zv*",
3536
"userId": "o@fME^0ckHa[VN6e&Zv*",

packages/destination-actions/src/destinations/recombee/addPurchase/generated-types.ts

+6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/destination-actions/src/destinations/recombee/addPurchase/index.ts

+7-4
Original file line numberDiff line numberDiff line change
@@ -92,23 +92,26 @@ const action: ActionDefinition<Settings, Payload> = {
9292
},
9393
perform: async (request, data) => {
9494
const client = new RecombeeApiClient(data.settings, request)
95-
await client.send(new Batch(payloadToInteractions(data.payload)))
95+
await client.send(new Batch(payloadToPurchases(data.payload)))
9696
},
9797
performBatch: async (request, data) => {
9898
const client = new RecombeeApiClient(data.settings, request)
99-
await client.send(new Batch(data.payload.flatMap(payloadToInteractions)))
99+
await client.send(new Batch(data.payload.flatMap(payloadToPurchases)))
100100
}
101101
}
102102

103-
function payloadToInteractions(payload: Payload): AddPurchase[] {
103+
function payloadToPurchases(payload: Payload): AddPurchase[] {
104104
return payload.items.map(
105105
(item) =>
106106
new AddPurchase({
107107
userId: payload.userId,
108108
...item,
109109
timestamp: payload.timestamp,
110110
recommId: payload.recommId,
111-
additionalData: payload.additionalData
111+
additionalData: {
112+
...(payload.internalAdditionalData ?? {}),
113+
...(payload.additionalData ?? {})
114+
}
112115
})
113116
)
114117
}

packages/destination-actions/src/destinations/recombee/addRating/__tests__/__snapshots__/snapshot.test.ts.snap

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ Object {
1616

1717
exports[`Testing snapshot for Recombee's addRating destination action: required fields 1`] = `
1818
Object {
19+
"additionalData": Object {},
1920
"cascadeCreate": true,
2021
"itemId": "ANsNPl1sV!#5(%#",
2122
"rating": 29019912231976.96,

packages/destination-actions/src/destinations/recombee/addRating/generated-types.ts

+6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/destination-actions/src/destinations/recombee/addRating/index.ts

+16-2
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,26 @@ const action: ActionDefinition<Settings, Payload> = {
5353
},
5454
perform: async (request, data) => {
5555
const client = new RecombeeApiClient(data.settings, request)
56-
await client.send(new AddRating(data.payload))
56+
await client.send(payloadToRating(data.payload))
5757
},
5858
performBatch: async (request, data) => {
5959
const client = new RecombeeApiClient(data.settings, request)
60-
await client.send(new Batch(data.payload.map((payload) => new AddRating(payload))))
60+
await client.send(new Batch(data.payload.map((payload) => payloadToRating(payload))))
6161
}
6262
}
6363

64+
function payloadToRating(payload: Payload): AddRating {
65+
return new AddRating({
66+
userId: payload.userId,
67+
itemId: payload.itemId,
68+
rating: payload.rating,
69+
timestamp: payload.timestamp,
70+
recommId: payload.recommId,
71+
additionalData: {
72+
...(payload.internalAdditionalData ?? {}),
73+
...(payload.additionalData ?? {})
74+
}
75+
})
76+
}
77+
6478
export default action

packages/destination-actions/src/destinations/recombee/commonFields.ts

+21-1
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,32 @@ export function interactionFields(interactionName: string): Record<string, Input
1111
'@path': '$.properties.recomm_id'
1212
}
1313
},
14+
internalAdditionalData: {
15+
label: 'Internal Additional Data',
16+
description: `Internal additional data to be stored with the ${interactionName}.`,
17+
type: 'object',
18+
defaultObjectUI: 'keyvalue:only',
19+
unsafe_hidden: true,
20+
default: {
21+
segmentEventType: {
22+
'@path': '$.type'
23+
},
24+
segmentEventName: {
25+
'@if': {
26+
exists: { '@path': '$.event' },
27+
then: { '@path': '$.event' },
28+
else: { '@path': '$.name' }
29+
}
30+
}
31+
}
32+
},
1433
additionalData: {
1534
label: 'Additional Data',
1635
description: `Additional data to be stored with the ${interactionName}. *Keep this field empty unless instructed by the Recombee Support team.*`,
1736
type: 'object',
1837
required: false,
19-
displayMode: 'collapsed'
38+
displayMode: 'collapsed',
39+
defaultObjectUI: 'keyvalue:only'
2040
}
2141
}
2242
}

packages/destination-actions/src/destinations/recombee/setViewPortion/__tests__/__snapshots__/snapshot.test.ts.snap

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ Object {
1717

1818
exports[`Testing snapshot for Recombee's setViewPortion destination action: required fields 1`] = `
1919
Object {
20+
"additionalData": Object {},
2021
"cascadeCreate": true,
2122
"itemId": "Np8pbQ",
2223
"portion": -70298178955509.76,

packages/destination-actions/src/destinations/recombee/setViewPortion/generated-types.ts

+6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/destination-actions/src/destinations/recombee/setViewPortion/index.ts

+17-2
Original file line numberDiff line numberDiff line change
@@ -61,12 +61,27 @@ const action: ActionDefinition<Settings, Payload> = {
6161
},
6262
perform: async (request, data) => {
6363
const client = new RecombeeApiClient(data.settings, request)
64-
await client.send(new SetViewPortion(data.payload))
64+
await client.send(payloadToViewPortion(data.payload))
6565
},
6666
performBatch: async (request, data) => {
6767
const client = new RecombeeApiClient(data.settings, request)
68-
await client.send(new Batch(data.payload.map((event) => new SetViewPortion(event))))
68+
await client.send(new Batch(data.payload.map((event) => payloadToViewPortion(event))))
6969
}
7070
}
7171

72+
function payloadToViewPortion(payload: Payload): SetViewPortion {
73+
return new SetViewPortion({
74+
userId: payload.userId,
75+
itemId: payload.itemId,
76+
portion: payload.portion,
77+
sessionId: payload.sessionId,
78+
timestamp: payload.timestamp,
79+
recommId: payload.recommId,
80+
additionalData: {
81+
...(payload.internalAdditionalData ?? {}),
82+
...(payload.additionalData ?? {})
83+
}
84+
})
85+
}
86+
7287
export default action

packages/destination-actions/src/destinations/recombee/setViewPortionFromWatchTime/__tests__/__snapshots__/snapshot.test.ts.snap

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ Object {
1717

1818
exports[`Testing snapshot for Recombee's setViewPortionFromWatchTime destination action: required fields 1`] = `
1919
Object {
20+
"additionalData": Object {},
2021
"cascadeCreate": true,
2122
"itemId": "FcP0tLN]UE",
2223
"portion": 1,

0 commit comments

Comments
 (0)