@eyevinn/player-analytics-shared 0.7.3 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  import { createClient } from '@clickhouse/client';
2
- import { AbstractDBAdapter, ErrorType, IGetItemInput, IGetItems, IHandleErrorOutput, IPutItemInput } from '../../types/interfaces';
2
+ import { AbstractDBAdapter, ErrorType, IGetItemInput, IGetItems, IHandleErrorOutput, IPutItemInput, IPutItemsInput } from '../../types/interfaces';
3
3
  import winston from 'winston';
4
4
 
5
5
  interface EventItem {
@@ -120,6 +120,61 @@ export class ClickHouseDBAdapter implements AbstractDBAdapter {
120
120
  return true;
121
121
  }
122
122
 
123
+ async putItems(params: IPutItemsInput): Promise<boolean> {
124
+ const tableName = params.tableName;
125
+ const items = params.data as EventItem[];
126
+
127
+ if (!items || items.length === 0) {
128
+ this.logger.warn('No items provided for batch insert');
129
+ return true;
130
+ }
131
+
132
+ this.logger.debug(`Batch inserting ${items.length} items into ${tableName}`);
133
+
134
+ // Prepare all items for insertion
135
+ const data = items.map(item => {
136
+ // Convert payload to JSON string if it's an object
137
+ const payload = typeof item.payload === 'object'
138
+ ? JSON.stringify(item.payload)
139
+ : item.payload || '';
140
+
141
+ // Prepare the data for insertion
142
+ let parsedPayload = {};
143
+ if (payload) {
144
+ try {
145
+ parsedPayload = JSON.parse(payload);
146
+ } catch (error) {
147
+ this.logger.warn('Payload not json, skipping parsing');
148
+ }
149
+ }
150
+
151
+ return {
152
+ event: item.event,
153
+ sessionId: item.sessionId,
154
+ timestamp: item.timestamp,
155
+ playhead: item.playhead || -1,
156
+ duration: item.duration || -1,
157
+ live: parsedPayload['live'] || false,
158
+ contentId: parsedPayload['contentId'] || '',
159
+ userId: parsedPayload['userId'] || '',
160
+ deviceId: parsedPayload['deviceId'] || '',
161
+ deviceModel: parsedPayload['deviceModel'] || '',
162
+ deviceType: parsedPayload['deviceType'] || '',
163
+ payload
164
+ };
165
+ });
166
+
167
+ // Insert all data in a single batch operation
168
+ await this.dbClient.insert({
169
+ table: tableName,
170
+ values: data,
171
+ format: 'JSONEachRow'
172
+ });
173
+
174
+ this.logger.debug(`Successfully batch inserted ${items.length} items into ${tableName}`);
175
+ return true;
176
+ }
177
+
123
178
  async getItem(params: IGetItemInput): Promise<any> {
124
179
  throw new Error('Method not implemented.');
125
180
  }
@@ -18,6 +18,7 @@ import {
18
18
  IGetItemInput,
19
19
  IGetItems,
20
20
  IPutItemInput,
21
+ IPutItemsInput,
21
22
  IHandleErrorOutput,
22
23
  ErrorType,
23
24
  } from '../../types/interfaces';
@@ -64,6 +65,44 @@ export class DynamoDBAdapter implements AbstractDBAdapter {
64
65
  }
65
66
  }
66
67
 
68
+ async putItems(params: IPutItemsInput): Promise<boolean> {
69
+ try {
70
+ if (!params.data || params.data.length === 0) {
71
+ this.logger.warn('No items provided for batch insert');
72
+ return true;
73
+ }
74
+
75
+ this.logger.debug(`Batch inserting ${params.data.length} items into ${params.tableName}`);
76
+
77
+ // DynamoDB batch write has a limit of 25 items per request
78
+ const batchSize = 25;
79
+ const batches: Object[][] = [];
80
+
81
+ for (let i = 0; i < params.data.length; i += batchSize) {
82
+ batches.push(params.data.slice(i, i + batchSize));
83
+ }
84
+
85
+ // Process all batches
86
+ for (const batch of batches) {
87
+ const promises = batch.map(item =>
88
+ this.dbClient.send(
89
+ new PutItemCommand({
90
+ TableName: params.tableName,
91
+ Item: marshall(item),
92
+ })
93
+ )
94
+ );
95
+
96
+ await Promise.all(promises);
97
+ }
98
+
99
+ this.logger.debug(`Successfully batch inserted ${params.data.length} items into ${params.tableName}`);
100
+ return true;
101
+ } catch (err) {
102
+ throw this.handleError(err);
103
+ }
104
+ }
105
+
67
106
  async getItem(params: IGetItemInput): Promise<any> {
68
107
  try {
69
108
  const data = await this.dbClient.send(
@@ -1,5 +1,5 @@
1
1
  import { Logger } from "winston";
2
- import { AbstractDBAdapter, IHandleErrorOutput, ErrorType, IPutItemInput, IGetItemInput, IGetItems } from "../../types/interfaces";
2
+ import { AbstractDBAdapter, IHandleErrorOutput, ErrorType, IPutItemInput, IPutItemsInput, IGetItemInput, IGetItems } from "../../types/interfaces";
3
3
  import { MongoClient } from "mongodb";
4
4
 
5
5
  const DB_NAME = "EPAS";
@@ -40,6 +40,25 @@ export class MongoDBAdapter implements AbstractDBAdapter {
40
40
  }
41
41
  }
42
42
 
43
+ public async putItems({ tableName, data }: IPutItemsInput): Promise<boolean> {
44
+ try {
45
+ if (!data || data.length === 0) {
46
+ this.logger.warn('No items provided for batch insert');
47
+ return true;
48
+ }
49
+
50
+ this.logger.debug(`Batch inserting ${data.length} items into ${tableName}`);
51
+
52
+ const collection = await this.dbClient.db().collection(tableName);
53
+ const result = await collection.insertMany(data);
54
+
55
+ this.logger.debug(`Successfully batch inserted ${data.length} items into ${tableName}`);
56
+ return result.acknowledged;
57
+ } catch (error) {
58
+ throw this.handleError(error);
59
+ }
60
+ }
61
+
43
62
  public async getItem({ sessionId, tableName, timestamp }: IGetItemInput): Promise<any> {
44
63
  try {
45
64
  const collection = await this.dbClient.db().collection(tableName);
@@ -156,7 +156,7 @@ export class SqsQueueAdapter implements AbstractQueueAdapter {
156
156
  const deleteMessageCommand = new DeleteMessageCommand(params);
157
157
  try {
158
158
  const deleteMessageResult = await this.client.send(deleteMessageCommand);
159
- this.logger.info(
159
+ this.logger.debug(
160
160
  `Response from SQS: ${JSON.stringify(deleteMessageResult)}`
161
161
  );
162
162
  return deleteMessageResult;
@@ -1,4 +1,4 @@
1
- import { AbstractDBAdapter, IGetItemInput, IGetItems, IHandleErrorOutput, IPutItemInput } from '../../types/interfaces';
1
+ import { AbstractDBAdapter, IGetItemInput, IGetItems, IHandleErrorOutput, IPutItemInput, IPutItemsInput } from '../../types/interfaces';
2
2
  import winston from 'winston';
3
3
  export declare class ClickHouseDBAdapter implements AbstractDBAdapter {
4
4
  logger: winston.Logger;
@@ -6,6 +6,7 @@ export declare class ClickHouseDBAdapter implements AbstractDBAdapter {
6
6
  constructor(logger: winston.Logger);
7
7
  tableExists(name: string): Promise<boolean>;
8
8
  putItem(params: IPutItemInput): Promise<boolean>;
9
+ putItems(params: IPutItemsInput): Promise<boolean>;
9
10
  getItem(params: IGetItemInput): Promise<any>;
10
11
  deleteItem(params: IGetItemInput): Promise<boolean>;
11
12
  getItemsBySession(params: IGetItems): Promise<any[]>;
@@ -114,6 +114,56 @@ class ClickHouseDBAdapter {
114
114
  return true;
115
115
  });
116
116
  }
117
+ putItems(params) {
118
+ return __awaiter(this, void 0, void 0, function* () {
119
+ const tableName = params.tableName;
120
+ const items = params.data;
121
+ if (!items || items.length === 0) {
122
+ this.logger.warn('No items provided for batch insert');
123
+ return true;
124
+ }
125
+ this.logger.debug(`Batch inserting ${items.length} items into ${tableName}`);
126
+ // Prepare all items for insertion
127
+ const data = items.map(item => {
128
+ // Convert payload to JSON string if it's an object
129
+ const payload = typeof item.payload === 'object'
130
+ ? JSON.stringify(item.payload)
131
+ : item.payload || '';
132
+ // Prepare the data for insertion
133
+ let parsedPayload = {};
134
+ if (payload) {
135
+ try {
136
+ parsedPayload = JSON.parse(payload);
137
+ }
138
+ catch (error) {
139
+ this.logger.warn('Payload not json, skipping parsing');
140
+ }
141
+ }
142
+ return {
143
+ event: item.event,
144
+ sessionId: item.sessionId,
145
+ timestamp: item.timestamp,
146
+ playhead: item.playhead || -1,
147
+ duration: item.duration || -1,
148
+ live: parsedPayload['live'] || false,
149
+ contentId: parsedPayload['contentId'] || '',
150
+ userId: parsedPayload['userId'] || '',
151
+ deviceId: parsedPayload['deviceId'] || '',
152
+ deviceModel: parsedPayload['deviceModel'] || '',
153
+ deviceType: parsedPayload['deviceType'] || '',
154
+ payload
155
+ };
156
+ });
157
+ // Insert all data in a single batch operation
158
+ yield this.dbClient.insert({
159
+ table: tableName,
160
+ values: data,
161
+ format: 'JSONEachRow'
162
+ });
163
+ this.logger.debug(`Successfully batch inserted ${items.length} items into ${tableName}`);
164
+ return true;
165
+ });
166
+ }
117
167
  getItem(params) {
118
168
  return __awaiter(this, void 0, void 0, function* () {
119
169
  throw new Error('Method not implemented.');
@@ -1 +1 @@
1
- {"version":3,"file":"ClickHouseDBAdapter.js","sourceRoot":"","sources":["../../../adapters/db/ClickHouseDBAdapter.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+CAAkD;AAClD,uDAAmI;AAYnI,MAAa,mBAAmB;IAI9B,YAAY,MAAsB;QAChC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,IAAA,qBAAY,EAAC;YAC3B,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc;SAChC,CAAC,CAAC;IACL,CAAC;IAEK,WAAW,CAAC,IAAY;;YAC5B,IAAI;gBACF,MAAM,KAAK,GAAG,8EAA8E,IAAI,GAAG,CAAC;gBACpG,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;oBAC1C,KAAK;oBACL,MAAM,EAAE,aAAa;iBACtB,CAAC,CAAC;gBAEH,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;gBACpC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;oBACnB,OAAO,IAAI,CAAC;iBACb;qBAAM;oBACL,qCAAqC;oBACrC,MAAM,gBAAgB,GAAG;qCACI,IAAI;;;;;;;;;;;;;;;;;;;;;OAqBlC,CAAC;oBAEF,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;wBACxB,KAAK,EAAE,gBAAgB;qBACxB,CAAC,CAAC;oBAEH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,yBAAyB,CAAC,CAAC;oBAC1D,OAAO,IAAI,CAAC;iBACX;aACF;YAAC,OAAO,GAAG,EAAE;gBACZ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,IAAI,WAAW,CAAC,CAAC;gBAC/D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACvB,OAAO,KAAK,CAAC;aACd;QACH,CAAC;KAAA;IAEK,OAAO,CAAC,MAAqB;;YACjC,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;YACnC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAiB,CAAC;YAEtC,iCAAiC;YACjC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAExB,mDAAmD;YACnD,MAAM,OAAO,GAAG,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;gBAC9C,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;gBAC9B,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;YAEvB,iCAAiC;YACjC,IAAI,aAAa,GAAG,EAAE,CAAC;YACvB,IAAI,OAAO,EAAE;gBACX,IAAI;oBACF,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;iBACrC;gBAAC,OAAO,KAAK,EAAE;oBACd,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;iBACxD;aACF;YACD,MAAM,IAAI,GAAG,CAAC;oBACZ,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;oBAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;oBAC7B,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,IAAI,KAAK;oBACpC,SAAS,EAAE,aAAa,CAAC,WAAW,CAAC,IAAI,EAAE;oBAC3C,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE;oBACrC,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,IAAI,EAAE;oBACzC,WAAW,EAAE,aAAa,CAAC,aAAa,CAAC,IAAI,EAAE;oBAC/C,UAAU,EAAE,aAAa,CAAC,YAAY,CAAC,IAAI,EAAE;oBAC7C,OAAO;iBACR,CAAC,CAAC;YAEH,kBAAkB;YAClB,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACzB,KAAK,EAAE,SAAS;gBAChB,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,aAAa;aACtB,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,SAAS,EAAE,CAAC,CAAC;YAClE,OAAO,IAAI,CAAC;QACd,CAAC;KAAA;IAEK,OAAO,CAAC,MAAqB;;YACjC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;KAAA;IAEK,UAAU,CAAC,MAAqB;;YACpC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;KAAA;IAEK,iBAAiB,CAAC,MAAiB;;YACvC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;KAAA;IAED,WAAW,CAAC,WAAgB;QAC1B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC/B,MAAM,WAAW,GAAuB;YACtC,SAAS,EAAE,sBAAS,CAAC,KAAK;YAC1B,KAAK,EAAE,WAAW;SACnB,CAAC;QACF,OAAO,WAAW,CAAC;IACrB,CAAC;CACF;AAjID,kDAiIC"}
1
+ {"version":3,"file":"ClickHouseDBAdapter.js","sourceRoot":"","sources":["../../../adapters/db/ClickHouseDBAdapter.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,13 @@
1
1
  import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
2
2
  import winston from 'winston';
3
- import { AbstractDBAdapter, IGetItemInput, IGetItems, IPutItemInput, IHandleErrorOutput } from '../../types/interfaces';
3
+ import { AbstractDBAdapter, IGetItemInput, IGetItems, IPutItemInput, IPutItemsInput, IHandleErrorOutput } from '../../types/interfaces';
4
4
  export declare class DynamoDBAdapter implements AbstractDBAdapter {
5
5
  logger: winston.Logger;
6
6
  dbClient: DynamoDBClient;
7
7
  constructor(logger: winston.Logger);
8
8
  tableExists(name: string): Promise<boolean>;
9
9
  putItem(params: IPutItemInput): Promise<boolean>;
10
+ putItems(params: IPutItemsInput): Promise<boolean>;
10
11
  getItem(params: IGetItemInput): Promise<any>;
11
12
  deleteItem(params: IGetItemInput): Promise<boolean>;
12
13
  getItemsBySession(params: IGetItems): Promise<any[]>;
@@ -55,6 +55,36 @@ class DynamoDBAdapter {
55
55
  }
56
56
  });
57
57
  }
58
+ putItems(params) {
59
+ return __awaiter(this, void 0, void 0, function* () {
60
+ try {
61
+ if (!params.data || params.data.length === 0) {
62
+ this.logger.warn('No items provided for batch insert');
63
+ return true;
64
+ }
65
+ this.logger.debug(`Batch inserting ${params.data.length} items into ${params.tableName}`);
66
+ // DynamoDB batch write has a limit of 25 items per request
67
+ const batchSize = 25;
68
+ const batches = [];
69
+ for (let i = 0; i < params.data.length; i += batchSize) {
70
+ batches.push(params.data.slice(i, i + batchSize));
71
+ }
72
+ // Process all batches
73
+ for (const batch of batches) {
74
+ const promises = batch.map(item => this.dbClient.send(new client_dynamodb_1.PutItemCommand({
75
+ TableName: params.tableName,
76
+ Item: (0, util_dynamodb_1.marshall)(item),
77
+ })));
78
+ yield Promise.all(promises);
79
+ }
80
+ this.logger.debug(`Successfully batch inserted ${params.data.length} items into ${params.tableName}`);
81
+ return true;
82
+ }
83
+ catch (err) {
84
+ throw this.handleError(err);
85
+ }
86
+ });
87
+ }
58
88
  getItem(params) {
59
89
  return __awaiter(this, void 0, void 0, function* () {
60
90
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"DynamoDBAdapter.js","sourceRoot":"","sources":["../../../adapters/db/DynamoDBAdapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DynamoDBAdapter.js","sourceRoot":"","sources":["../../../adapters/db/DynamoDBAdapter.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { Logger } from "winston";
2
- import { AbstractDBAdapter, IHandleErrorOutput, IPutItemInput, IGetItemInput, IGetItems } from "../../types/interfaces";
2
+ import { AbstractDBAdapter, IHandleErrorOutput, IPutItemInput, IPutItemsInput, IGetItemInput, IGetItems } from "../../types/interfaces";
3
3
  import { MongoClient } from "mongodb";
4
4
  export declare class MongoDBAdapter implements AbstractDBAdapter {
5
5
  logger: Logger;
@@ -9,6 +9,7 @@ export declare class MongoDBAdapter implements AbstractDBAdapter {
9
9
  private connect;
10
10
  tableExists(tableName: string): Promise<boolean>;
11
11
  putItem({ tableName, data }: IPutItemInput): Promise<boolean>;
12
+ putItems({ tableName, data }: IPutItemsInput): Promise<boolean>;
12
13
  getItem({ sessionId, tableName, timestamp }: IGetItemInput): Promise<any>;
13
14
  deleteItem({ sessionId, tableName, timestamp }: IGetItemInput): Promise<boolean>;
14
15
  getItemsBySession({ tableName, sessionId }: IGetItems): Promise<any[]>;
@@ -51,6 +51,24 @@ class MongoDBAdapter {
51
51
  }
52
52
  });
53
53
  }
54
+ putItems({ tableName, data }) {
55
+ return __awaiter(this, void 0, void 0, function* () {
56
+ try {
57
+ if (!data || data.length === 0) {
58
+ this.logger.warn('No items provided for batch insert');
59
+ return true;
60
+ }
61
+ this.logger.debug(`Batch inserting ${data.length} items into ${tableName}`);
62
+ const collection = yield this.dbClient.db().collection(tableName);
63
+ const result = yield collection.insertMany(data);
64
+ this.logger.debug(`Successfully batch inserted ${data.length} items into ${tableName}`);
65
+ return result.acknowledged;
66
+ }
67
+ catch (error) {
68
+ throw this.handleError(error);
69
+ }
70
+ });
71
+ }
54
72
  getItem({ sessionId, tableName, timestamp }) {
55
73
  return __awaiter(this, void 0, void 0, function* () {
56
74
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"MongoDBAdapter.js","sourceRoot":"","sources":["../../../adapters/db/MongoDBAdapter.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,uDAAmI;AACnI,qCAAsC;AAEtC,MAAM,OAAO,GAAG,MAAM,CAAC;AAEvB,MAAa,cAAc;IAIzB,YAAY,MAAc;QACxB,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,qBAAqB,CAAC;QAC1E,IAAI,CAAC,QAAQ,GAAG,IAAI,qBAAW,CAAC,gBAAgB,CAAC,CAAC;QAClD,IAAI,CAAC,OAAO,EAAE,CAAA;QACd,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAEa,WAAW;;YACvB,OAAO,CAAC,CAAC,CAAA,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAA,CAAC;QAChE,CAAC;KAAA;IAEa,OAAO;;YACnB,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QAChC,CAAC;KAAA;IAEY,WAAW,CAAC,SAAiB;;YACxC,IAAI,CAAC,CAAA,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;gBAAE,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YACpD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC;YAC3D,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;YAC9E,OAAO,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACxC,CAAC;KAAA;IAEY,OAAO,CAAC,EAAE,SAAS,EAAE,IAAI,EAAiB;;YACrD,IAAI;gBACF,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;gBAClE,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAChD,OAAO,MAAM,CAAC,YAAY,CAAC;aAC5B;YAAC,OAAO,KAAK,EAAE;gBACd,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;aAC/B;QACH,CAAC;KAAA;IAEY,OAAO,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAiB;;YACrE,IAAI;gBACF,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;gBAClE,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;gBACxF,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;aAC/B;QACH,CAAC;KAAA;IAEY,UAAU,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAiB;;YACxE,IAAI;gBACF,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;gBAClE,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC1F,OAAO,MAAM,CAAC,YAAY,CAAC;aAC5B;YAAC,OAAO,KAAK,EAAE;gBACd,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;aAC/B;QACH,CAAC;KAAA;IACY,iBAAiB,CAAC,EAAE,SAAS,EAAE,SAAS,EAAa;;YAChE,IAAI;gBACF,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;gBAClE,OAAO,MAAM,UAAU,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;aAClE;YAAC,OAAO,KAAK,EAAE;gBACd,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;aAC/B;QACH,CAAC;KAAA;IAEM,WAAW,CAAC,KAAU;QAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACzB,OAAO;YACL,SAAS,EAAE,sBAAS,CAAC,KAAK;YAC1B,KAAK,EAAE,KAAK;SACb,CAAC;IACJ,CAAC;CAEF;AAxED,wCAwEC"}
1
+ {"version":3,"file":"MongoDBAdapter.js","sourceRoot":"","sources":["../../../adapters/db/MongoDBAdapter.ts"],"names":[],"mappings":"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"}
@@ -169,7 +169,7 @@ class SqsQueueAdapter {
169
169
  const deleteMessageCommand = new client_sqs_1.DeleteMessageCommand(params);
170
170
  try {
171
171
  const deleteMessageResult = yield this.client.send(deleteMessageCommand);
172
- this.logger.info(`Response from SQS: ${JSON.stringify(deleteMessageResult)}`);
172
+ this.logger.debug(`Response from SQS: ${JSON.stringify(deleteMessageResult)}`);
173
173
  return deleteMessageResult;
174
174
  }
175
175
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"SqsQueueAdapter.js","sourceRoot":"","sources":["../../../adapters/queue/SqsQueueAdapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SqsQueueAdapter.js","sourceRoot":"","sources":["../../../adapters/queue/SqsQueueAdapter.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,10 @@ export interface IPutItemInput {
11
11
  tableName: string;
12
12
  data: Object;
13
13
  }
14
+ export interface IPutItemsInput {
15
+ tableName: string;
16
+ data: Object[];
17
+ }
14
18
  export interface IGetItems {
15
19
  sessionId: string;
16
20
  tableName: string;
@@ -25,6 +29,7 @@ export declare abstract class AbstractDBAdapter {
25
29
  dbClient: any;
26
30
  abstract tableExists(name: string): Promise<boolean>;
27
31
  abstract putItem(params: IPutItemInput): Promise<boolean>;
32
+ abstract putItems(params: IPutItemsInput): Promise<boolean>;
28
33
  abstract getItem(params: IGetItemInput): Promise<any>;
29
34
  abstract deleteItem(params: IGetItemInput): Promise<boolean>;
30
35
  abstract getItemsBySession(params: IGetItems): Promise<any[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"db.js","sourceRoot":"","sources":["../../types/db.ts"],"names":[],"mappings":";;;AAEA,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,2CAAW,CAAA;IACX,iDAAc,CAAA;AAChB,CAAC,EAHW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAGpB;AAuBD,MAAsB,iBAAiB;CAUtC;AAVD,8CAUC"}
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../../types/db.ts"],"names":[],"mappings":";;;AAEA,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,2CAAW,CAAA;IACX,iDAAc,CAAA;AAChB,CAAC,EAHW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAGpB;AA4BD,MAAsB,iBAAiB;CAWtC;AAXD,8CAWC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eyevinn/player-analytics-shared",
3
- "version": "0.7.3",
3
+ "version": "0.8.0",
4
4
  "description": "Shared modules &amp; adapters for EPAS components",
5
5
  "source": "index.ts",
6
6
  "main": "./build/index.js",
@@ -113,6 +113,44 @@ describe('Dynamo DB Adapter', () => {
113
113
  expect(result).toBeTrue();
114
114
  });
115
115
 
116
+ it('should put multiple items to database in batch', async () => {
117
+ const DDBReply: PutItemCommandOutput = {
118
+ $metadata: {
119
+ httpStatusCode: 200,
120
+ },
121
+ };
122
+ const adapter = new DynamoDBAdapter(Logger);
123
+ const mockEvents = [
124
+ {
125
+ event: 'loading',
126
+ timestamp: 0,
127
+ playhead: 0,
128
+ duration: 0,
129
+ host: 'mock.tenant.mock',
130
+ },
131
+ {
132
+ event: 'playing',
133
+ timestamp: 1000,
134
+ playhead: 1,
135
+ duration: 60,
136
+ host: 'mock.tenant.mock',
137
+ },
138
+ {
139
+ event: 'paused',
140
+ timestamp: 2000,
141
+ playhead: 2,
142
+ duration: 60,
143
+ host: 'mock.tenant.mock',
144
+ }
145
+ ];
146
+ ddbMock.on(PutItemCommand).resolves(DDBReply);
147
+ const result = await adapter.putItems({
148
+ tableName: 'table_1',
149
+ data: mockEvents,
150
+ });
151
+ expect(result).toBeTrue();
152
+ });
153
+
116
154
  it('should label errorType with "continue" when allowed error occurs', async () => {
117
155
  const DDBReply: AwsError = {
118
156
  Type: 'Sender',
package/types/db.ts CHANGED
@@ -15,6 +15,11 @@ export interface IPutItemInput {
15
15
  data: Object;
16
16
  }
17
17
 
18
+ export interface IPutItemsInput {
19
+ tableName: string;
20
+ data: Object[];
21
+ }
22
+
18
23
  export interface IGetItems {
19
24
  sessionId: string;
20
25
  tableName: string;
@@ -32,6 +37,7 @@ export abstract class AbstractDBAdapter {
32
37
 
33
38
  abstract tableExists(name: string): Promise<boolean>;
34
39
  abstract putItem(params: IPutItemInput): Promise<boolean>;
40
+ abstract putItems(params: IPutItemsInput): Promise<boolean>;
35
41
  abstract getItem(params: IGetItemInput): Promise<any>;
36
42
  abstract deleteItem(params: IGetItemInput): Promise<boolean>;
37
43
  abstract getItemsBySession(params: IGetItems): Promise<any[]>;