cmp-aws-database 2.1.2-dev.20 → 2.1.2-dev.22
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.
- package/dist/customer-user/{brows-history/brows-history-dao.d.ts → browse-history/browse-history-dao.d.ts} +3 -3
- package/dist/customer-user/browse-history/browse-history-dao.js +173 -0
- package/dist/customer-user/browse-history/browse-history-model.js +110 -0
- package/package.json +1 -1
- package/dist/customer-user/brows-history/brows-history-dao.js +0 -173
- package/dist/customer-user/brows-history/brows-history-model.js +0 -110
- /package/dist/customer-user/{brows-history/brows-history-model.d.ts → browse-history/browse-history-model.d.ts} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { GenericDynamooseDAO } from "../../base-dynamoose-dao";
|
|
2
2
|
import { AuthContext } from "../../base-dynamoose-model";
|
|
3
|
-
import { BrowseHistory, CreateBrowseHistoryInput } from "./
|
|
3
|
+
import { BrowseHistory, CreateBrowseHistoryInput } from "./browse-history-model";
|
|
4
4
|
type ListResult = {
|
|
5
5
|
items: BrowseHistory[];
|
|
6
6
|
nextToken?: string;
|
|
@@ -13,7 +13,7 @@ export type BrowseHistorySortOrder = "asc" | "desc";
|
|
|
13
13
|
* Table keys: `browsHistoryId` (PK).
|
|
14
14
|
* User lookup: query GSI `userIdIndex` by `userId`.
|
|
15
15
|
*/
|
|
16
|
-
declare class
|
|
16
|
+
declare class BrowseHistoryDao extends GenericDynamooseDAO<BrowseHistory> {
|
|
17
17
|
constructor();
|
|
18
18
|
/**
|
|
19
19
|
* Creates one browse-history record.
|
|
@@ -118,5 +118,5 @@ declare class BrowsHistoryDao extends GenericDynamooseDAO<BrowseHistory> {
|
|
|
118
118
|
*/
|
|
119
119
|
deleteById: (browsHistoryId: string) => Promise<void>;
|
|
120
120
|
}
|
|
121
|
-
export declare const
|
|
121
|
+
export declare const browseHistoryDao: BrowseHistoryDao;
|
|
122
122
|
export {};
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.browseHistoryDao = void 0;
|
|
7
|
+
const dynamoose_1 = __importDefault(require("dynamoose"));
|
|
8
|
+
const base_dynamoose_dao_1 = require("../../base-dynamoose-dao");
|
|
9
|
+
const browse_history_model_1 = require("./browse-history-model");
|
|
10
|
+
/**
|
|
11
|
+
* DAO for user platter browse history.
|
|
12
|
+
*
|
|
13
|
+
* Table keys: `browsHistoryId` (PK).
|
|
14
|
+
* User lookup: query GSI `userIdIndex` by `userId`.
|
|
15
|
+
*/
|
|
16
|
+
class BrowseHistoryDao extends base_dynamoose_dao_1.GenericDynamooseDAO {
|
|
17
|
+
constructor() {
|
|
18
|
+
super(browse_history_model_1.BrowseHistoryModel, "browseHistoryId");
|
|
19
|
+
/**
|
|
20
|
+
* Creates one browse-history record.
|
|
21
|
+
*
|
|
22
|
+
* Use when: user views a platter and you want to persist that browse event.
|
|
23
|
+
* - `browsHistoryId` auto-generates if omitted.
|
|
24
|
+
* - `userId` is required for later `getByUserId` / `listByUserId` lookups.
|
|
25
|
+
* - Stamps `created_time` / `created_user` automatically.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* await browsHistoryDao.save({
|
|
29
|
+
* userId: "user-123",
|
|
30
|
+
* platterId: "platter-abc",
|
|
31
|
+
* platterName: "Birthday Feast",
|
|
32
|
+
* platterType: "CATERING",
|
|
33
|
+
* platterPrice: 4999,
|
|
34
|
+
* totalItems: 12,
|
|
35
|
+
* menuType: "VEG",
|
|
36
|
+
* mealTime: "Dinner",
|
|
37
|
+
* platterImage: "https://...",
|
|
38
|
+
* replaceItemIds: [{ originalItemId: "item-1", replaceItemId: "item-2" }],
|
|
39
|
+
* addonIds: [],
|
|
40
|
+
* cutleryIds: [],
|
|
41
|
+
* liveCounterIds: [],
|
|
42
|
+
* skewerAddonIds: []
|
|
43
|
+
* }, { userSub: "user-123" });
|
|
44
|
+
*/
|
|
45
|
+
this.save = async (item, authContext) => {
|
|
46
|
+
return super.save(item, authContext);
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Updates one browse-history record by `browsHistoryId`.
|
|
50
|
+
*
|
|
51
|
+
* Use when: user re-visits same platter and you need to update selections or metadata.
|
|
52
|
+
* - Fails if the record does not exist.
|
|
53
|
+
* - Stamps `updated_time` / `updated_user` automatically.
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* await browsHistoryDao.update(
|
|
57
|
+
* "brows-history-uuid",
|
|
58
|
+
* { addonIds: ["addon-1", "addon-2"], platterPrice: 5499 },
|
|
59
|
+
* { userSub: "user-123" }
|
|
60
|
+
* );
|
|
61
|
+
*/
|
|
62
|
+
this.update = async (browseHistoryId, updates, authContext) => {
|
|
63
|
+
const updated = await browse_history_model_1.BrowseHistoryModel.update({ browseHistoryId }, {
|
|
64
|
+
...updates,
|
|
65
|
+
updated_time: new Date(),
|
|
66
|
+
updated_user: authContext?.userSub
|
|
67
|
+
}, {
|
|
68
|
+
condition: new dynamoose_1.default.Condition().attribute("browsHistoryId").exists()
|
|
69
|
+
});
|
|
70
|
+
return updated;
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* Fetches one browse-history record by primary key.
|
|
74
|
+
*
|
|
75
|
+
* Use when: detail screen already has `browsHistoryId` from a previous list response.
|
|
76
|
+
* Returns `null` when record is not found.
|
|
77
|
+
*
|
|
78
|
+
* @example
|
|
79
|
+
* const item = await browsHistoryDao.getById("brows-history-uuid");
|
|
80
|
+
*/
|
|
81
|
+
this.getById = async (browseHistoryId) => this.get(browseHistoryId);
|
|
82
|
+
/**
|
|
83
|
+
* Returns browse-history for a user with optional sort and limit.
|
|
84
|
+
*
|
|
85
|
+
* Use when: showing "Recently Viewed" or full browse history on home/profile screen.
|
|
86
|
+
* - Queries all pages from GSI `userIdIndex`, then sorts in memory.
|
|
87
|
+
* - Pass `sortBy` as `"created_time"` or `"updated_time"` to order results.
|
|
88
|
+
* - Default `sortOrder` is `"desc"` (newest first).
|
|
89
|
+
* - `limit` is applied after sorting so latest N items are returned correctly.
|
|
90
|
+
*
|
|
91
|
+
* @example
|
|
92
|
+
* // Latest 10 browsed platters (most recently updated first)
|
|
93
|
+
* const recent = await browsHistoryDao.getByUserId("user-123", 10, "updated_time");
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
96
|
+
* // Oldest viewed first
|
|
97
|
+
* const oldestFirst = await browsHistoryDao.getByUserId("user-123", undefined, "created_time", "asc");
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* // All history without sorting (raw DynamoDB order)
|
|
101
|
+
* const all = await browsHistoryDao.getByUserId("user-123");
|
|
102
|
+
*/
|
|
103
|
+
this.getByUserId = async (userId, limit, sortBy, sortOrder = "desc") => {
|
|
104
|
+
const items = [];
|
|
105
|
+
let token;
|
|
106
|
+
do {
|
|
107
|
+
const result = await this.listByUserId(userId, undefined, token);
|
|
108
|
+
items.push(...result.items);
|
|
109
|
+
token = result.nextToken;
|
|
110
|
+
} while (token);
|
|
111
|
+
const sortedItems = this.sortBrowsHistoryItems(items, sortBy, sortOrder);
|
|
112
|
+
return typeof limit === "number" ? sortedItems.slice(0, limit) : sortedItems;
|
|
113
|
+
};
|
|
114
|
+
/**
|
|
115
|
+
* Reads timestamp from audit field used for in-memory sorting.
|
|
116
|
+
*/
|
|
117
|
+
this.getBrowsHistorySortTime = (item, field) => {
|
|
118
|
+
const value = item[field];
|
|
119
|
+
if (!value) {
|
|
120
|
+
return 0;
|
|
121
|
+
}
|
|
122
|
+
return value instanceof Date ? value.getTime() : new Date(value).getTime();
|
|
123
|
+
};
|
|
124
|
+
/**
|
|
125
|
+
* Sorts browse-history items by `created_time` or `updated_time`.
|
|
126
|
+
*/
|
|
127
|
+
this.sortBrowsHistoryItems = (items, sortBy, sortOrder = "desc") => {
|
|
128
|
+
if (!sortBy) {
|
|
129
|
+
return items;
|
|
130
|
+
}
|
|
131
|
+
const direction = sortOrder === "asc" ? 1 : -1;
|
|
132
|
+
return [...items].sort((a, b) => (this.getBrowsHistorySortTime(a, sortBy) - this.getBrowsHistorySortTime(b, sortBy)) * direction);
|
|
133
|
+
};
|
|
134
|
+
/**
|
|
135
|
+
* Paginated query on GSI `userIdIndex`.
|
|
136
|
+
*
|
|
137
|
+
* Use when: infinite scroll / load-more UI where you pass `nextToken` from previous response.
|
|
138
|
+
* For sorted "recent N" views prefer `getByUserId` instead.
|
|
139
|
+
*
|
|
140
|
+
* @example
|
|
141
|
+
* const page1 = await browsHistoryDao.listByUserId("user-123", 20);
|
|
142
|
+
* const page2 = await browsHistoryDao.listByUserId("user-123", 20, page1.nextToken);
|
|
143
|
+
*/
|
|
144
|
+
this.listByUserId = async (userId, limit, token) => {
|
|
145
|
+
const decodedToken = this.decode(token);
|
|
146
|
+
let queryBuilder = browse_history_model_1.BrowseHistoryModel.query("userId").eq(userId).using("userIdIndex");
|
|
147
|
+
if (decodedToken) {
|
|
148
|
+
queryBuilder = queryBuilder.startAt(decodedToken);
|
|
149
|
+
}
|
|
150
|
+
if (typeof limit === "number") {
|
|
151
|
+
queryBuilder = queryBuilder.limit(limit);
|
|
152
|
+
}
|
|
153
|
+
const queryResult = await queryBuilder.exec();
|
|
154
|
+
return {
|
|
155
|
+
items: queryResult,
|
|
156
|
+
nextToken: await this.encode(queryResult.lastKey)
|
|
157
|
+
};
|
|
158
|
+
};
|
|
159
|
+
/**
|
|
160
|
+
* Deletes one browse-history record by primary key.
|
|
161
|
+
*
|
|
162
|
+
* Use when: user clears a single item from browse history.
|
|
163
|
+
*
|
|
164
|
+
* @example
|
|
165
|
+
* await browsHistoryDao.deleteById("brows-history-uuid");
|
|
166
|
+
*/
|
|
167
|
+
this.deleteById = async (browsHistoryId) => {
|
|
168
|
+
await this.delete(browsHistoryId);
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
exports.browseHistoryDao = new BrowseHistoryDao();
|
|
173
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3NlLWhpc3RvcnktZGFvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2N1c3RvbWVyLXVzZXIvYnJvd3NlLWhpc3RvcnkvYnJvd3NlLWhpc3RvcnktZGFvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDBEQUFrQztBQUNsQyxpRUFBMEU7QUFFMUUsaUVBSWdDO0FBVWhDOzs7OztHQUtHO0FBQ0gsTUFBTSxnQkFBaUIsU0FBUSx3Q0FBa0M7SUFDN0Q7UUFDSSxLQUFLLENBQUMseUNBQWtCLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUdqRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztXQXlCRztRQUNILFNBQUksR0FBRyxLQUFLLEVBQUUsSUFBOEIsRUFBRSxXQUF5QixFQUEwQixFQUFFO1lBQy9GLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFxQixFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQzFELENBQUMsQ0FBQztRQUVGOzs7Ozs7Ozs7Ozs7O1dBYUc7UUFDSCxXQUFNLEdBQUcsS0FBSyxFQUNWLGVBQXVCLEVBQ3ZCLE9BQStCLEVBQy9CLFdBQXlCLEVBQ0gsRUFBRTtZQUN4QixNQUFNLE9BQU8sR0FBRyxNQUFNLHlDQUFrQixDQUFDLE1BQU0sQ0FDM0MsRUFBRSxlQUFlLEVBQUUsRUFDbkI7Z0JBQ0ksR0FBRyxPQUFPO2dCQUNWLFlBQVksRUFBRSxJQUFJLElBQUksRUFBRTtnQkFDeEIsWUFBWSxFQUFFLFdBQVcsRUFBRSxPQUFPO2FBQ3JDLEVBQ0Q7Z0JBQ0ksU0FBUyxFQUFFLElBQUksbUJBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxNQUFNLEVBQUU7YUFDNUUsQ0FDSixDQUFDO1lBQ0YsT0FBTyxPQUFtQyxDQUFDO1FBQy9DLENBQUMsQ0FBQztRQUVGOzs7Ozs7OztXQVFHO1FBQ0gsWUFBTyxHQUFHLEtBQUssRUFBRSxlQUF1QixFQUFpQyxF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QUFDO1lBQzdDLENBQUM7WUFDRCxNQUFNLFdBQVcsR0FBRyxNQUFNLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM5QyxPQUFPO2dCQUNILEtBQUssRUFBRSxXQUF5QztnQkFDaEQsU0FBUyxFQUFFLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsT0FBZ0MsQ0FBQzthQUM3RSxDQUFDO1FBQ04sQ0FBQyxDQUFDO1FBRUY7Ozs7Ozs7V0FPRztRQUNILGVBQVUsR0FBRyxLQUFLLEVBQUUsY0FBc0IsRUFBaUIsRUFBRTtZQUN6RCxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDO0lBckxGLENBQUM7Q0FzTEo7QUFFWSxRQUFBLGdCQUFnQixHQUFHLElBQUksZ0JBQWdCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkeW5hbW9vc2UgZnJvbSBcImR5bmFtb29zZVwiO1xuaW1wb3J0IHsgRHluYW1vS2V5LCBHZW5lcmljRHluYW1vb3NlREFPIH0gZnJvbSBcIi4uLy4uL2Jhc2UtZHluYW1vb3NlLWRhb1wiO1xuaW1wb3J0IHsgQXV0aENvbnRleHQgfSBmcm9tIFwiLi4vLi4vYmFzZS1keW5hbW9vc2UtbW9kZWxcIjtcbmltcG9ydCB7XG4gICAgQnJvd3NlSGlzdG9yeSxcbiAgICBCcm93c2VIaXN0b3J5TW9kZWwsXG4gICAgQ3JlYXRlQnJvd3NlSGlzdG9yeUlucHV0XG59IGZyb20gXCIuL2Jyb3dzZS1oaXN0b3J5LW1vZGVsXCI7XG5cbnR5cGUgTGlzdFJlc3VsdCA9IHtcbiAgICBpdGVtczogQnJvd3NlSGlzdG9yeVtdO1xuICAgIG5leHRUb2tlbj86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEJyb3dzZUhpc3RvcnlTb3J0RmllbGQgPSBcImNyZWF0ZWRfdGltZVwiIHwgXCJ1cGRhdGVkX3RpbWVcIjtcbmV4cG9ydCB0eXBlIEJyb3dzZUhpc3RvcnlTb3J0T3JkZXIgPSBcImFzY1wiIHwgXCJkZXNjXCI7XG5cbi8qKlxuICogREFPIGZvciB1c2VyIHBsYXR0ZXIgYnJvd3NlIGhpc3RvcnkuXG4gKlxuICogVGFibGUga2V5czogYGJyb3dzSGlzdG9yeUlkYCAoUEspLlxuICogVXNlciBsb29rdXA6IHF1ZXJ5IEdTSSBgdXNlcklkSW5kZXhgIGJ5IGB1c2VySWRgLlxuICovXG5jbGFzcyBCcm93c2VIaXN0b3J5RGFvIGV4dGVuZHMgR2VuZXJpY0R5bmFtb29zZURBTzxCcm93c2VIaXN0b3J5PiB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKEJyb3dzZUhpc3RvcnlNb2RlbCwgXCJicm93c2VIaXN0b3J5SWRcIik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBvbmUgYnJvd3NlLWhpc3RvcnkgcmVjb3JkLlxuICAgICAqXG4gICAgICogVXNlIHdoZW46IHVzZXIgdmlld3MgYSBwbGF0dGVyIGFuZCB5b3Ugd2FudCB0byBwZXJzaXN0IHRoYXQgYnJvd3NlIGV2ZW50LlxuICAgICAqIC0gYGJyb3dzSGlzdG9yeUlkYCBhdXRvLWdlbmVyYXRlcyBpZiBvbWl0dGVkLlxuICAgICAqIC0gYHVzZXJJZGAgaXMgcmVxdWlyZWQgZm9yIGxhdGVyIGBnZXRCeVVzZXJJZGAgLyBgbGlzdEJ5VXNlcklkYCBsb29rdXBzLlxuICAgICAqIC0gU3RhbXBzIGBjcmVhdGVkX3RpbWVgIC8gYGNyZWF0ZWRfdXNlcmAgYXV0b21hdGljYWxseS5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYXdhaXQgYnJvd3NIaXN0b3J5RGFvLnNhdmUoe1xuICAgICAqICAgICB1c2VySWQ6IFwidXNlci0xMjNcIixcbiAgICAgKiAgICAgcGxhdHRlcklkOiBcInBsYXR0ZXItYWJjXCIsXG4gICAgICogICAgIHBsYXR0ZXJOYW1lOiBcIkJpcnRoZGF5IEZlYXN0XCIsXG4gICAgICogICAgIHBsYXR0ZXJUeXBlOiBcIkNBVEVSSU5HXCIsXG4gICAgICogICAgIHBsYXR0ZXJQcmljZTogNDk5OSxcbiAgICAgKiAgICAgdG90YWxJdGVtczogMTIsXG4gICAgICogICAgIG1lbnVUeXBlOiBcIlZFR1wiLFxuICAgICAqICAgICBtZWFsVGltZTogXCJEaW5uZXJcIixcbiAgICAgKiAgICAgcGxhdHRlckltYWdlOiBcImh0dHBzOi8vLi4uXCIsXG4gICAgICogICAgIHJlcGxhY2VJdGVtSWRzOiBbeyBvcmlnaW5hbEl0ZW1JZDogXCJpdGVtLTFcIiwgcmVwbGFjZUl0ZW1JZDogXCJpdGVtLTJcIiB9XSxcbiAgICAgKiAgICAgYWRkb25JZHM6IFtdLFxuICAgICAqICAgICBjdXRsZXJ5SWRzOiBbXSxcbiAgICAgKiAgICAgbGl2ZUNvdW50ZXJJZHM6IFtdLFxuICAgICAqICAgICBza2V3ZXJBZGRvbklkczogW11cbiAgICAgKiB9LCB7IHVzZXJTdWI6IFwidXNlci0xMjNcIiB9KTtcbiAgICAgKi9cbiAgICBzYXZlID0gYXN5bmMgKGl0ZW06IENyZWF0ZUJyb3dzZUhpc3RvcnlJbnB1dCwgYXV0aENvbnRleHQ/OiBBdXRoQ29udGV4dCk6IFByb21pc2U8QnJvd3NlSGlzdG9yeT4gPT4ge1xuICAgICAgICByZXR1cm4gc3VwZXIuc2F2ZShpdGVtIGFzIEJyb3dzZUhpc3RvcnksIGF1dGhDb250ZXh0KTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogVXBkYXRlcyBvbmUgYnJvd3NlLWhpc3RvcnkgcmVjb3JkIGJ5IGBicm93c0hpc3RvcnlJZGAuXG4gICAgICpcbiAgICAgKiBVc2Ugd2hlbjogdXNlciByZS12aXNpdHMgc2FtZSBwbGF0dGVyIGFuZCB5b3UgbmVlZCB0byB1cGRhdGUgc2VsZWN0aW9ucyBvciBtZXRhZGF0YS5cbiAgICAgKiAtIEZhaWxzIGlmIHRoZSByZWNvcmQgZG9lcyBub3QgZXhpc3QuXG4gICAgICogLSBTdGFtcHMgYHVwZGF0ZWRfdGltZWAgLyBgdXBkYXRlZF91c2VyYCBhdXRvbWF0aWNhbGx5LlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBhd2FpdCBicm93c0hpc3RvcnlEYW8udXBkYXRlKFxuICAgICAqICAgICBcImJyb3dzLWhpc3RvcnktdXVpZFwiLFxuICAgICAqICAgICB7IGFkZG9uSWRzOiBbXCJhZGRvbi0xXCIsIFwiYWRkb24tMlwiXSwgcGxhdHRlclByaWNlOiA1NDk5IH0sXG4gICAgICogICAgIHsgdXNlclN1YjogXCJ1c2VyLTEyM1wiIH1cbiAgICAgKiApO1xuICAgICAqL1xuICAgIHVwZGF0ZSA9IGFzeW5jIChcbiAgICAgICAgYnJvd3NlSGlzdG9yeUlkOiBzdHJpbmcsXG4gICAgICAgIHVwZGF0ZXM6IFBhcnRpYWw8QnJvd3NlSGlzdG9yeT4sXG4gICAgICAgIGF1dGhDb250ZXh0PzogQXV0aENvbnRleHRcbiAgICApOiBQcm9taXNlPEJyb3dzZUhpc3Rvcnk+ID0+IHtcbiAgICAgICAgY29uc3QgdXBkYXRlZCA9IGF3YWl0IEJyb3dzZUhpc3RvcnlNb2RlbC51cGRhdGUoXG4gICAgICAgICAgICB7IGJyb3dzZUhpc3RvcnlJZCB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC4uLnVwZGF0ZXMsXG4gICAgICAgICAgICAgICAgdXBkYXRlZF90aW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgICAgIHVwZGF0ZWRfdXNlcjogYXV0aENvbnRleHQ/LnVzZXJTdWJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29uZGl0aW9uOiBuZXcgZHluYW1vb3NlLkNvbmRpdGlvbigpLmF0dHJpYnV0ZShcImJyb3dzSGlzdG9yeUlkXCIpLmV4aXN0cygpXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB1cGRhdGVkIGFzIHVua25vd24gYXMgQnJvd3NlSGlzdG9yeTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogRmV0Y2hlcyBvbmUgYnJvd3NlLWhpc3RvcnkgcmVjb3JkIGJ5IHByaW1hcnkga2V5LlxuICAgICAqXG4gICAgICogVXNlIHdoZW46IGRldGFpbCBzY3JlZW4gYWxyZWFkeSBoYXMgYGJyb3dzSGlzdG9yeUlkYCBmcm9tIGEgcHJldmlvdXMgbGlzdCByZXNwb25zZS5cbiAgICAgKiBSZXR1cm5zIGBudWxsYCB3aGVuIHJlY29yZCBpcyBub3QgZm91bmQuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGNvbnN0IGl0ZW0gPSBhd2FpdCBicm93c0hpc3RvcnlEYW8uZ2V0QnlJZChcImJyb3dzLWhpc3RvcnktdXVpZFwiKTtcbiAgICAgKi9cbiAgICBnZXRCeUlkID0gYXN5bmMgKGJyb3dzZUhpc3RvcnlJZDogc3RyaW5nKTogUHJvbWlzZTxCcm93c2VIaXN0b3J5IHwgbnVsbD4gPT4gdGhpcy5nZXQoYnJvd3NlSGlzdG9yeUlkKTtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYnJvd3NlLWhpc3RvcnkgZm9yIGEgdXNlciB3aXRoIG9wdGlvbmFsIHNvcnQgYW5kIGxpbWl0LlxuICAgICAqXG4gICAgICogVXNlIHdoZW46IHNob3dpbmcgXCJSZWNlbnRseSBWaWV3ZWRcIiBvciBmdWxsIGJyb3dzZSBoaXN0b3J5IG9uIGhvbWUvcHJvZmlsZSBzY3JlZW4uXG4gICAgICogLSBRdWVyaWVzIGFsbCBwYWdlcyBmcm9tIEdTSSBgdXNlcklkSW5kZXhgLCB0aGVuIHNvcnRzIGluIG1lbW9yeS5cbiAgICAgKiAtIFBhc3MgYHNvcnRCeWAgYXMgYFwiY3JlYXRlZF90aW1lXCJgIG9yIGBcInVwZGF0ZWRfdGltZVwiYCB0byBvcmRlciByZXN1bHRzLlxuICAgICAqIC0gRGVmYXVsdCBgc29ydE9yZGVyYCBpcyBgXCJkZXNjXCJgIChuZXdlc3QgZmlyc3QpLlxuICAgICAqIC0gYGxpbWl0YCBpcyBhcHBsaWVkIGFmdGVyIHNvcnRpbmcgc28gbGF0ZXN0IE4gaXRlbXMgYXJlIHJldHVybmVkIGNvcnJlY3RseS5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogLy8gTGF0ZXN0IDEwIGJyb3dzZWQgcGxhdHRlcnMgKG1vc3QgcmVjZW50bHkgdXBkYXRlZCBmaXJzdClcbiAgICAgKiBjb25zdCByZWNlbnQgPSBhd2FpdCBicm93c0hpc3RvcnlEYW8uZ2V0QnlVc2VySWQoXCJ1c2VyLTEyM1wiLCAxMCwgXCJ1cGRhdGVkX3RpbWVcIik7XG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIC8vIE9sZGVzdCB2aWV3ZWQgZmlyc3RcbiAgICAgKiBjb25zdCBvbGRlc3RGaXJzdCA9IGF3YWl0IGJyb3dzSGlzdG9yeURhby5nZXRCeVVzZXJJZChcInVzZXItMTIzXCIsIHVuZGVmaW5lZCwgXCJjcmVhdGVkX3RpbWVcIiwgXCJhc2NcIik7XG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIC8vIEFsbCBoaXN0b3J5IHdpdGhvdXQgc29ydGluZyAocmF3IER5bmFtb0RCIG9yZGVyKVxuICAgICAqIGNvbnN0IGFsbCA9IGF3YWl0IGJyb3dzSGlzdG9yeURhby5nZXRCeVVzZXJJZChcInVzZXItMTIzXCIpO1xuICAgICAqL1xuICAgIGdldEJ5VXNlcklkID0gYXN5bmMgKFxuICAgICAgICB1c2VySWQ6IHN0cmluZyxcbiAgICAgICAgbGltaXQ/OiBudW1iZXIsXG4gICAgICAgIHNvcnRCeT86IEJyb3dzZUhpc3RvcnlTb3J0RmllbGQsXG4gICAgICAgIHNvcnRPcmRlcjogQnJvd3NlSGlzdG9yeVNvcnRPcmRlciA9IFwiZGVzY1wiXG4gICAgKTogUHJvbWlzZTxCcm93c2VIaXN0b3J5W10+ID0+IHtcbiAgICAgICAgY29uc3QgaXRlbXM6IEJyb3dzZUhpc3RvcnlbXSA9IFtdO1xuICAgICAgICBsZXQgdG9rZW46IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgICAgICBkbyB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmxpc3RCeVVzZXJJZCh1c2VySWQsIHVuZGVmaW5lZCwgdG9rZW4pO1xuICAgICAgICAgICAgaXRlbXMucHVzaCguLi5yZXN1bHQuaXRlbXMpO1xuICAgICAgICAgICAgdG9rZW4gPSByZXN1bHQubmV4dFRva2VuO1xuICAgICAgICB9IHdoaWxlICh0b2tlbik7XG5cbiAgICAgICAgY29uc3Qgc29ydGVkSXRlbXMgPSB0aGlzLnNvcnRCcm93c0hpc3RvcnlJdGVtcyhpdGVtcywgc29ydEJ5LCBzb3J0T3JkZXIpO1xuICAgICAgICByZXR1cm4gdHlwZW9mIGxpbWl0ID09PSBcIm51bWJlclwiID8gc29ydGVkSXRlbXMuc2xpY2UoMCwgbGltaXQpIDogc29ydGVkSXRlbXM7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFJlYWRzIHRpbWVzdGFtcCBmcm9tIGF1ZGl0IGZpZWxkIHVzZWQgZm9yIGluLW1lbW9yeSBzb3J0aW5nLlxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0QnJvd3NIaXN0b3J5U29ydFRpbWUgPSAoaXRlbTogQnJvd3NlSGlzdG9yeSwgZmllbGQ6IEJyb3dzZUhpc3RvcnlTb3J0RmllbGQpOiBudW1iZXIgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGl0ZW1bZmllbGRdO1xuICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUuZ2V0VGltZSgpIDogbmV3IERhdGUodmFsdWUpLmdldFRpbWUoKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogU29ydHMgYnJvd3NlLWhpc3RvcnkgaXRlbXMgYnkgYGNyZWF0ZWRfdGltZWAgb3IgYHVwZGF0ZWRfdGltZWAuXG4gICAgICovXG4gICAgcHJpdmF0ZSBzb3J0QnJvd3NIaXN0b3J5SXRlbXMgPSAoXG4gICAgICAgIGl0ZW1zOiBCcm93c2VIaXN0b3J5W10sXG4gICAgICAgIHNvcnRCeT86IEJyb3dzZUhpc3RvcnlTb3J0RmllbGQsXG4gICAgICAgIHNvcnRPcmRlcjogQnJvd3NlSGlzdG9yeVNvcnRPcmRlciA9IFwiZGVzY1wiXG4gICAgKTogQnJvd3NlSGlzdG9yeVtdID0+IHtcbiAgICAgICAgaWYgKCFzb3J0QnkpIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtcztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IHNvcnRPcmRlciA9PT0gXCJhc2NcIiA/IDEgOiAtMTtcbiAgICAgICAgcmV0dXJuIFsuLi5pdGVtc10uc29ydChcbiAgICAgICAgICAgIChhLCBiKSA9PiAodGhpcy5nZXRCcm93c0hpc3RvcnlTb3J0VGltZShhLCBzb3J0QnkpIC0gdGhpcy5nZXRCcm93c0hpc3RvcnlTb3J0VGltZShiLCBzb3J0QnkpKSAqIGRpcmVjdGlvblxuICAgICAgICApO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBQYWdpbmF0ZWQgcXVlcnkgb24gR1NJIGB1c2VySWRJbmRleGAuXG4gICAgICpcbiAgICAgKiBVc2Ugd2hlbjogaW5maW5pdGUgc2Nyb2xsIC8gbG9hZC1tb3JlIFVJIHdoZXJlIHlvdSBwYXNzIGBuZXh0VG9rZW5gIGZyb20gcHJldmlvdXMgcmVzcG9uc2UuXG4gICAgICogRm9yIHNvcnRlZCBcInJlY2VudCBOXCIgdmlld3MgcHJlZmVyIGBnZXRCeVVzZXJJZGAgaW5zdGVhZC5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogY29uc3QgcGFnZTEgPSBhd2FpdCBicm93c0hpc3RvcnlEYW8ubGlzdEJ5VXNlcklkKFwidXNlci0xMjNcIiwgMjApO1xuICAgICAqIGNvbnN0IHBhZ2UyID0gYXdhaXQgYnJvd3NIaXN0b3J5RGFvLmxpc3RCeVVzZXJJZChcInVzZXItMTIzXCIsIDIwLCBwYWdlMS5uZXh0VG9rZW4pO1xuICAgICAqL1xuICAgIGxpc3RCeVVzZXJJZCA9IGFzeW5jICh1c2VySWQ6IHN0cmluZywgbGltaXQ/OiBudW1iZXIsIHRva2VuPzogc3RyaW5nKTogUHJvbWlzZTxMaXN0UmVzdWx0PiA9PiB7XG4gICAgICAgIGNvbnN0IGRlY29kZWRUb2tlbiA9IHRoaXMuZGVjb2RlKHRva2VuKTtcbiAgICAgICAgbGV0IHF1ZXJ5QnVpbGRlciA9IEJyb3dzZUhpc3RvcnlNb2RlbC5xdWVyeShcInVzZXJJZFwiKS5lcSh1c2VySWQpLnVzaW5nKFwidXNlcklkSW5kZXhcIik7XG4gICAgICAgIGlmIChkZWNvZGVkVG9rZW4pIHtcbiAgICAgICAgICAgIHF1ZXJ5QnVpbGRlciA9IHF1ZXJ5QnVpbGRlci5zdGFydEF0KGRlY29kZWRUb2tlbik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBsaW1pdCA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgcXVlcnlCdWlsZGVyID0gcXVlcnlCdWlsZGVyLmxpbWl0KGxpbWl0KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBxdWVyeVJlc3VsdCA9IGF3YWl0IHF1ZXJ5QnVpbGRlci5leGVjKCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpdGVtczogcXVlcnlSZXN1bHQgYXMgdW5rbm93biBhcyBCcm93c2VIaXN0b3J5W10sXG4gICAgICAgICAgICBuZXh0VG9rZW46IGF3YWl0IHRoaXMuZW5jb2RlKHF1ZXJ5UmVzdWx0Lmxhc3RLZXkgYXMgRHluYW1vS2V5IHwgdW5kZWZpbmVkKVxuICAgICAgICB9O1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBEZWxldGVzIG9uZSBicm93c2UtaGlzdG9yeSByZWNvcmQgYnkgcHJpbWFyeSBrZXkuXG4gICAgICpcbiAgICAgKiBVc2Ugd2hlbjogdXNlciBjbGVhcnMgYSBzaW5nbGUgaXRlbSBmcm9tIGJyb3dzZSBoaXN0b3J5LlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBhd2FpdCBicm93c0hpc3RvcnlEYW8uZGVsZXRlQnlJZChcImJyb3dzLWhpc3RvcnktdXVpZFwiKTtcbiAgICAgKi9cbiAgICBkZWxldGVCeUlkID0gYXN5bmMgKGJyb3dzSGlzdG9yeUlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5kZWxldGUoYnJvd3NIaXN0b3J5SWQpO1xuICAgIH07XG59XG5cbmV4cG9ydCBjb25zdCBicm93c2VIaXN0b3J5RGFvID0gbmV3IEJyb3dzZUhpc3RvcnlEYW8oKTtcbiJdfQ==
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.convertToBrowseHistoryModel = exports.BrowseHistoryModel = void 0;
|
|
7
|
+
const dynamoose_1 = __importDefault(require("dynamoose"));
|
|
8
|
+
const crypto_1 = require("crypto");
|
|
9
|
+
const base_dynamoose_model_1 = require("../../base-dynamoose-model");
|
|
10
|
+
const table_names_1 = require("../../config/table-names");
|
|
11
|
+
const browseHistorySchema = new dynamoose_1.default.Schema({
|
|
12
|
+
browseHistoryId: {
|
|
13
|
+
type: String,
|
|
14
|
+
hashKey: true,
|
|
15
|
+
required: true,
|
|
16
|
+
default: () => (0, crypto_1.randomUUID)()
|
|
17
|
+
},
|
|
18
|
+
userId: {
|
|
19
|
+
type: String,
|
|
20
|
+
required: true,
|
|
21
|
+
index: {
|
|
22
|
+
name: "userIdIndex",
|
|
23
|
+
type: "global"
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
resumeJourneyId: {
|
|
27
|
+
type: String,
|
|
28
|
+
required: true
|
|
29
|
+
},
|
|
30
|
+
platterId: {
|
|
31
|
+
type: String,
|
|
32
|
+
required: true
|
|
33
|
+
},
|
|
34
|
+
platterName: {
|
|
35
|
+
type: String,
|
|
36
|
+
required: true
|
|
37
|
+
},
|
|
38
|
+
platterType: {
|
|
39
|
+
type: String,
|
|
40
|
+
required: true
|
|
41
|
+
},
|
|
42
|
+
platterSubType: String,
|
|
43
|
+
platterPrice: {
|
|
44
|
+
type: Number,
|
|
45
|
+
required: true
|
|
46
|
+
},
|
|
47
|
+
totalItems: {
|
|
48
|
+
type: Number,
|
|
49
|
+
required: true
|
|
50
|
+
},
|
|
51
|
+
menuType: {
|
|
52
|
+
type: String,
|
|
53
|
+
required: true
|
|
54
|
+
},
|
|
55
|
+
mealTime: {
|
|
56
|
+
type: String,
|
|
57
|
+
required: true
|
|
58
|
+
},
|
|
59
|
+
platterImage: {
|
|
60
|
+
type: String,
|
|
61
|
+
required: true
|
|
62
|
+
},
|
|
63
|
+
replaceItemIds: {
|
|
64
|
+
type: Array,
|
|
65
|
+
schema: [{
|
|
66
|
+
type: Object,
|
|
67
|
+
schema: {
|
|
68
|
+
originalItemId: {
|
|
69
|
+
type: String,
|
|
70
|
+
required: true
|
|
71
|
+
},
|
|
72
|
+
replaceItemId: {
|
|
73
|
+
type: String,
|
|
74
|
+
required: true
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}],
|
|
78
|
+
default: []
|
|
79
|
+
},
|
|
80
|
+
addonIds: {
|
|
81
|
+
type: Array,
|
|
82
|
+
schema: [String],
|
|
83
|
+
default: []
|
|
84
|
+
},
|
|
85
|
+
cutleryIds: {
|
|
86
|
+
type: Array,
|
|
87
|
+
schema: [String],
|
|
88
|
+
default: []
|
|
89
|
+
},
|
|
90
|
+
liveCounterIds: {
|
|
91
|
+
type: Array,
|
|
92
|
+
schema: [String],
|
|
93
|
+
default: []
|
|
94
|
+
},
|
|
95
|
+
skewerAddonIds: {
|
|
96
|
+
type: Array,
|
|
97
|
+
schema: [String],
|
|
98
|
+
default: []
|
|
99
|
+
},
|
|
100
|
+
...base_dynamoose_model_1.BASE_DYNAMOOSE_AUDIT_SCHEMA
|
|
101
|
+
}, {
|
|
102
|
+
saveUnknown: false,
|
|
103
|
+
timestamps: true
|
|
104
|
+
});
|
|
105
|
+
exports.BrowseHistoryModel = dynamoose_1.default.model(table_names_1.TABLE_NAMES.BROWSE_HISTORY, browseHistorySchema, { create: false, waitForActive: false });
|
|
106
|
+
const convertToBrowseHistoryModel = (input) => {
|
|
107
|
+
return new exports.BrowseHistoryModel(input);
|
|
108
|
+
};
|
|
109
|
+
exports.convertToBrowseHistoryModel = convertToBrowseHistoryModel;
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3NlLWhpc3RvcnktbW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY3VzdG9tZXItdXNlci9icm93c2UtaGlzdG9yeS9icm93c2UtaGlzdG9yeS1tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwwREFBa0M7QUFDbEMsbUNBQW9DO0FBQ3BDLHFFQUE2RjtBQUM3RiwwREFBdUQ7QUErQnZELE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxtQkFBUyxDQUFDLE1BQU0sQ0FDNUM7SUFDSSxlQUFlLEVBQUU7UUFDYixJQUFJLEVBQUUsTUFBTTtRQUNaLE9BQU8sRUFBRSxJQUFJO1FBQ2IsUUFBUSxFQUFFLElBQUk7UUFDZCxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBQSxtQkFBVSxHQUFFO0tBQzlCO0lBQ0QsTUFBTSxFQUFFO1FBQ0osSUFBSSxFQUFFLE1BQU07UUFDWixRQUFRLEVBQUUsSUFBSTtRQUNkLEtBQUssRUFBRTtZQUNILElBQUksRUFBRSxhQUFhO1lBQ25CLElBQUksRUFBRSxRQUFRO1NBQ2pCO0tBQ0o7SUFDRCxlQUFlLEVBQUU7UUFDYixJQUFJLEVBQUUsTUFBTTtRQUNaLFFBQVEsRUFBRSxJQUFJO0tBQ2pCO0lBQ0QsU0FBUyxFQUFFO1FBQ1AsSUFBSSxFQUFFLE1BQU07UUFDWixRQUFRLEVBQUUsSUFBSTtLQUNqQjtJQUNELFdBQVcsRUFBRTtRQUNULElBQUksRUFBRSxNQUFNO1FBQ1osUUFBUSxFQUFFLElBQUk7S0FDakI7SUFDRCxXQUFXLEVBQUU7UUFDVCxJQUFJLEVBQUUsTUFBTTtRQUNaLFFBQVEsRUFBRSxJQUFJO0tBQ2pCO0lBQ0QsY0FBYyxFQUFFLE1BQU07SUFDdEIsWUFBWSxFQUFFO1FBQ1YsSUFBSSxFQUFFLE1BQU07UUFDWixRQUFRLEVBQUUsSUFBSTtLQUNqQjtJQUNELFVBQVUsRUFBRTtRQUNSLElBQUksRUFBRSxNQUFNO1FBQ1osUUFBUSxFQUFFLElBQUk7S0FDakI7SUFDRCxRQUFRLEVBQUU7UUFDTixJQUFJLEVBQUUsTUFBTTtRQUNaLFFBQVEsRUFBRSxJQUFJO0tBQ2pCO0lBQ0QsUUFBUSxFQUFFO1FBQ04sSUFBSSxFQUFFLE1BQU07UUFDWixRQUFRLEVBQUUsSUFBSTtLQUNqQjtJQUNELFlBQVksRUFBRTtRQUNWLElBQUksRUFBRSxNQUFNO1FBQ1osUUFBUSxFQUFFLElBQUk7S0FDakI7SUFDRCxjQUFjLEVBQUU7UUFDWixJQUFJLEVBQUUsS0FBSztRQUNYLE1BQU0sRUFBRSxDQUFDO2dCQUNMLElBQUksRUFBRSxNQUFNO2dCQUNaLE1BQU0sRUFBRTtvQkFDSixjQUFjLEVBQUU7d0JBQ1osSUFBSSxFQUFFLE1BQU07d0JBQ1osUUFBUSxFQUFFLElBQUk7cUJBQ2pCO29CQUNELGFBQWEsRUFBRTt3QkFDWCxJQUFJLEVBQUUsTUFBTTt3QkFDWixRQUFRLEVBQUUsSUFBSTtxQkFDakI7aUJBQ0o7YUFDSixDQUFDO1FBQ0YsT0FBTyxFQUFFLEVBQUU7S0FDZDtJQUNELFFBQVEsRUFBRTtRQUNOLElBQUksRUFBRSxLQUFLO1FBQ1gsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDO1FBQ2hCLE9BQU8sRUFBRSxFQUFFO0tBQ2Q7SUFDRCxVQUFVLEVBQUU7UUFDUixJQUFJLEVBQUUsS0FBSztRQUNYLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQztRQUNoQixPQUFPLEVBQUUsRUFBRTtLQUNkO0lBQ0QsY0FBYyxFQUFFO1FBQ1osSUFBSSxFQUFFLEtBQUs7UUFDWCxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUM7UUFDaEIsT0FBTyxFQUFFLEVBQUU7S0FDZDtJQUNELGNBQWMsRUFBRTtRQUNaLElBQUksRUFBRSxLQUFLO1FBQ1gsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDO1FBQ2hCLE9BQU8sRUFBRSxFQUFFO0tBQ2Q7SUFDRCxHQUFHLGtEQUEyQjtDQUNqQyxFQUNEO0lBQ0ksV0FBVyxFQUFFLEtBQUs7SUFDbEIsVUFBVSxFQUFFLElBQUk7Q0FDbkIsQ0FDSixDQUFDO0FBRVcsUUFBQSxrQkFBa0IsR0FBRyxtQkFBUyxDQUFDLEtBQUssQ0FDN0MseUJBQVcsQ0FBQyxjQUFjLEVBQzFCLG1CQUFtQixFQUNuQixFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxDQUMxQyxDQUFDO0FBRUssTUFBTSwyQkFBMkIsR0FBRyxDQUFDLEtBQStDLEVBQUUsRUFBRTtJQUMzRixPQUFPLElBQUksMEJBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDekMsQ0FBQyxDQUFDO0FBRlcsUUFBQSwyQkFBMkIsK0JBRXRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGR5bmFtb29zZSBmcm9tIFwiZHluYW1vb3NlXCI7XG5pbXBvcnQgeyByYW5kb21VVUlEIH0gZnJvbSBcImNyeXB0b1wiO1xuaW1wb3J0IHsgQkFTRV9EWU5BTU9PU0VfQVVESVRfU0NIRU1BLCBCYXNlRHluYW1vb3NlTW9kZWwgfSBmcm9tIFwiLi4vLi4vYmFzZS1keW5hbW9vc2UtbW9kZWxcIjtcbmltcG9ydCB7IFRBQkxFX05BTUVTIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy90YWJsZS1uYW1lc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJyb3dzSGlzdG9yeVJlcGxhY2VJdGVtIHtcbiAgICBvcmlnaW5hbEl0ZW1JZDogc3RyaW5nO1xuICAgIHJlcGxhY2VJdGVtSWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCcm93c2VIaXN0b3J5IGV4dGVuZHMgQmFzZUR5bmFtb29zZU1vZGVsIHtcbiAgICBicm93c2VIaXN0b3J5SWQ6IHN0cmluZztcbiAgICB1c2VySWQ6IHN0cmluZztcbiAgICByZXN1bWVKb3VybmV5SWQ6IHN0cmluZztcbiAgICBwbGF0dGVySWQ6IHN0cmluZztcbiAgICBwbGF0dGVyTmFtZTogc3RyaW5nO1xuICAgIHBsYXR0ZXJUeXBlOiBzdHJpbmc7XG4gICAgcGxhdHRlclN1YlR5cGU/OiBzdHJpbmc7XG4gICAgcGxhdHRlclByaWNlOiBudW1iZXI7XG4gICAgdG90YWxJdGVtczogbnVtYmVyO1xuICAgIG1lbnVUeXBlOiBzdHJpbmc7XG4gICAgbWVhbFRpbWU6IHN0cmluZztcbiAgICBwbGF0dGVySW1hZ2U6IHN0cmluZztcbiAgICByZXBsYWNlSXRlbUlkczogQnJvd3NIaXN0b3J5UmVwbGFjZUl0ZW1bXTtcbiAgICBhZGRvbklkczogc3RyaW5nW107XG4gICAgY3V0bGVyeUlkczogc3RyaW5nW107XG4gICAgbGl2ZUNvdW50ZXJJZHM6IHN0cmluZ1tdO1xuICAgIHNrZXdlckFkZG9uSWRzOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IHR5cGUgQ3JlYXRlQnJvd3NlSGlzdG9yeUlucHV0ID0gT21pdDxCcm93c2VIaXN0b3J5LCBcImJyb3dzZUhpc3RvcnlJZFwiPiAmIHtcbiAgICBicm93c2VIaXN0b3J5SWQ/OiBzdHJpbmc7XG59O1xuXG5jb25zdCBicm93c2VIaXN0b3J5U2NoZW1hID0gbmV3IGR5bmFtb29zZS5TY2hlbWEoXG4gICAge1xuICAgICAgICBicm93c2VIaXN0b3J5SWQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIGhhc2hLZXk6IHRydWUsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICgpID0+IHJhbmRvbVVVSUQoKVxuICAgICAgICB9LFxuICAgICAgICB1c2VySWQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgaW5kZXg6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBcInVzZXJJZEluZGV4XCIsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJnbG9iYWxcIlxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICByZXN1bWVKb3VybmV5SWQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHBsYXR0ZXJJZDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgcGxhdHRlck5hbWU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHBsYXR0ZXJUeXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBwbGF0dGVyU3ViVHlwZTogU3RyaW5nLFxuICAgICAgICBwbGF0dGVyUHJpY2U6IHtcbiAgICAgICAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHRvdGFsSXRlbXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIG1lbnVUeXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBtZWFsVGltZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgcGxhdHRlckltYWdlOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICByZXBsYWNlSXRlbUlkczoge1xuICAgICAgICAgICAgdHlwZTogQXJyYXksXG4gICAgICAgICAgICBzY2hlbWE6IFt7XG4gICAgICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgICAgIHNjaGVtYToge1xuICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbEl0ZW1JZDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcmVwbGFjZUl0ZW1JZDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1dLFxuICAgICAgICAgICAgZGVmYXVsdDogW11cbiAgICAgICAgfSxcbiAgICAgICAgYWRkb25JZHM6IHtcbiAgICAgICAgICAgIHR5cGU6IEFycmF5LFxuICAgICAgICAgICAgc2NoZW1hOiBbU3RyaW5nXSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IFtdXG4gICAgICAgIH0sXG4gICAgICAgIGN1dGxlcnlJZHM6IHtcbiAgICAgICAgICAgIHR5cGU6IEFycmF5LFxuICAgICAgICAgICAgc2NoZW1hOiBbU3RyaW5nXSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IFtdXG4gICAgICAgIH0sXG4gICAgICAgIGxpdmVDb3VudGVySWRzOiB7XG4gICAgICAgICAgICB0eXBlOiBBcnJheSxcbiAgICAgICAgICAgIHNjaGVtYTogW1N0cmluZ10sXG4gICAgICAgICAgICBkZWZhdWx0OiBbXVxuICAgICAgICB9LFxuICAgICAgICBza2V3ZXJBZGRvbklkczoge1xuICAgICAgICAgICAgdHlwZTogQXJyYXksXG4gICAgICAgICAgICBzY2hlbWE6IFtTdHJpbmddLFxuICAgICAgICAgICAgZGVmYXVsdDogW11cbiAgICAgICAgfSxcbiAgICAgICAgLi4uQkFTRV9EWU5BTU9PU0VfQVVESVRfU0NIRU1BXG4gICAgfSxcbiAgICB7XG4gICAgICAgIHNhdmVVbmtub3duOiBmYWxzZSxcbiAgICAgICAgdGltZXN0YW1wczogdHJ1ZVxuICAgIH1cbik7XG5cbmV4cG9ydCBjb25zdCBCcm93c2VIaXN0b3J5TW9kZWwgPSBkeW5hbW9vc2UubW9kZWw8QnJvd3NlSGlzdG9yeT4oXG4gICAgVEFCTEVfTkFNRVMuQlJPV1NFX0hJU1RPUlksXG4gICAgYnJvd3NlSGlzdG9yeVNjaGVtYSxcbiAgICB7IGNyZWF0ZTogZmFsc2UsIHdhaXRGb3JBY3RpdmU6IGZhbHNlIH1cbik7XG5cbmV4cG9ydCBjb25zdCBjb252ZXJ0VG9Ccm93c2VIaXN0b3J5TW9kZWwgPSAoaW5wdXQ6IENyZWF0ZUJyb3dzZUhpc3RvcnlJbnB1dCB8IEJyb3dzZUhpc3RvcnkpID0+IHtcbiAgICByZXR1cm4gbmV3IEJyb3dzZUhpc3RvcnlNb2RlbChpbnB1dCk7XG59O1xuIl19
|
package/package.json
CHANGED
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.browsHistoryDao = void 0;
|
|
7
|
-
const dynamoose_1 = __importDefault(require("dynamoose"));
|
|
8
|
-
const base_dynamoose_dao_1 = require("../../base-dynamoose-dao");
|
|
9
|
-
const brows_history_model_1 = require("./brows-history-model");
|
|
10
|
-
/**
|
|
11
|
-
* DAO for user platter browse history.
|
|
12
|
-
*
|
|
13
|
-
* Table keys: `browsHistoryId` (PK).
|
|
14
|
-
* User lookup: query GSI `userIdIndex` by `userId`.
|
|
15
|
-
*/
|
|
16
|
-
class BrowsHistoryDao extends base_dynamoose_dao_1.GenericDynamooseDAO {
|
|
17
|
-
constructor() {
|
|
18
|
-
super(brows_history_model_1.BrowseHistoryModel, "browseHistoryId");
|
|
19
|
-
/**
|
|
20
|
-
* Creates one browse-history record.
|
|
21
|
-
*
|
|
22
|
-
* Use when: user views a platter and you want to persist that browse event.
|
|
23
|
-
* - `browsHistoryId` auto-generates if omitted.
|
|
24
|
-
* - `userId` is required for later `getByUserId` / `listByUserId` lookups.
|
|
25
|
-
* - Stamps `created_time` / `created_user` automatically.
|
|
26
|
-
*
|
|
27
|
-
* @example
|
|
28
|
-
* await browsHistoryDao.save({
|
|
29
|
-
* userId: "user-123",
|
|
30
|
-
* platterId: "platter-abc",
|
|
31
|
-
* platterName: "Birthday Feast",
|
|
32
|
-
* platterType: "CATERING",
|
|
33
|
-
* platterPrice: 4999,
|
|
34
|
-
* totalItems: 12,
|
|
35
|
-
* menuType: "VEG",
|
|
36
|
-
* mealTime: "Dinner",
|
|
37
|
-
* platterImage: "https://...",
|
|
38
|
-
* replaceItemIds: [{ originalItemId: "item-1", replaceItemId: "item-2" }],
|
|
39
|
-
* addonIds: [],
|
|
40
|
-
* cutleryIds: [],
|
|
41
|
-
* liveCounterIds: [],
|
|
42
|
-
* skewerAddonIds: []
|
|
43
|
-
* }, { userSub: "user-123" });
|
|
44
|
-
*/
|
|
45
|
-
this.save = async (item, authContext) => {
|
|
46
|
-
return super.save(item, authContext);
|
|
47
|
-
};
|
|
48
|
-
/**
|
|
49
|
-
* Updates one browse-history record by `browsHistoryId`.
|
|
50
|
-
*
|
|
51
|
-
* Use when: user re-visits same platter and you need to update selections or metadata.
|
|
52
|
-
* - Fails if the record does not exist.
|
|
53
|
-
* - Stamps `updated_time` / `updated_user` automatically.
|
|
54
|
-
*
|
|
55
|
-
* @example
|
|
56
|
-
* await browsHistoryDao.update(
|
|
57
|
-
* "brows-history-uuid",
|
|
58
|
-
* { addonIds: ["addon-1", "addon-2"], platterPrice: 5499 },
|
|
59
|
-
* { userSub: "user-123" }
|
|
60
|
-
* );
|
|
61
|
-
*/
|
|
62
|
-
this.update = async (browseHistoryId, updates, authContext) => {
|
|
63
|
-
const updated = await brows_history_model_1.BrowseHistoryModel.update({ browseHistoryId }, {
|
|
64
|
-
...updates,
|
|
65
|
-
updated_time: new Date(),
|
|
66
|
-
updated_user: authContext?.userSub
|
|
67
|
-
}, {
|
|
68
|
-
condition: new dynamoose_1.default.Condition().attribute("browsHistoryId").exists()
|
|
69
|
-
});
|
|
70
|
-
return updated;
|
|
71
|
-
};
|
|
72
|
-
/**
|
|
73
|
-
* Fetches one browse-history record by primary key.
|
|
74
|
-
*
|
|
75
|
-
* Use when: detail screen already has `browsHistoryId` from a previous list response.
|
|
76
|
-
* Returns `null` when record is not found.
|
|
77
|
-
*
|
|
78
|
-
* @example
|
|
79
|
-
* const item = await browsHistoryDao.getById("brows-history-uuid");
|
|
80
|
-
*/
|
|
81
|
-
this.getById = async (browseHistoryId) => this.get(browseHistoryId);
|
|
82
|
-
/**
|
|
83
|
-
* Returns browse-history for a user with optional sort and limit.
|
|
84
|
-
*
|
|
85
|
-
* Use when: showing "Recently Viewed" or full browse history on home/profile screen.
|
|
86
|
-
* - Queries all pages from GSI `userIdIndex`, then sorts in memory.
|
|
87
|
-
* - Pass `sortBy` as `"created_time"` or `"updated_time"` to order results.
|
|
88
|
-
* - Default `sortOrder` is `"desc"` (newest first).
|
|
89
|
-
* - `limit` is applied after sorting so latest N items are returned correctly.
|
|
90
|
-
*
|
|
91
|
-
* @example
|
|
92
|
-
* // Latest 10 browsed platters (most recently updated first)
|
|
93
|
-
* const recent = await browsHistoryDao.getByUserId("user-123", 10, "updated_time");
|
|
94
|
-
*
|
|
95
|
-
* @example
|
|
96
|
-
* // Oldest viewed first
|
|
97
|
-
* const oldestFirst = await browsHistoryDao.getByUserId("user-123", undefined, "created_time", "asc");
|
|
98
|
-
*
|
|
99
|
-
* @example
|
|
100
|
-
* // All history without sorting (raw DynamoDB order)
|
|
101
|
-
* const all = await browsHistoryDao.getByUserId("user-123");
|
|
102
|
-
*/
|
|
103
|
-
this.getByUserId = async (userId, limit, sortBy, sortOrder = "desc") => {
|
|
104
|
-
const items = [];
|
|
105
|
-
let token;
|
|
106
|
-
do {
|
|
107
|
-
const result = await this.listByUserId(userId, undefined, token);
|
|
108
|
-
items.push(...result.items);
|
|
109
|
-
token = result.nextToken;
|
|
110
|
-
} while (token);
|
|
111
|
-
const sortedItems = this.sortBrowsHistoryItems(items, sortBy, sortOrder);
|
|
112
|
-
return typeof limit === "number" ? sortedItems.slice(0, limit) : sortedItems;
|
|
113
|
-
};
|
|
114
|
-
/**
|
|
115
|
-
* Reads timestamp from audit field used for in-memory sorting.
|
|
116
|
-
*/
|
|
117
|
-
this.getBrowsHistorySortTime = (item, field) => {
|
|
118
|
-
const value = item[field];
|
|
119
|
-
if (!value) {
|
|
120
|
-
return 0;
|
|
121
|
-
}
|
|
122
|
-
return value instanceof Date ? value.getTime() : new Date(value).getTime();
|
|
123
|
-
};
|
|
124
|
-
/**
|
|
125
|
-
* Sorts browse-history items by `created_time` or `updated_time`.
|
|
126
|
-
*/
|
|
127
|
-
this.sortBrowsHistoryItems = (items, sortBy, sortOrder = "desc") => {
|
|
128
|
-
if (!sortBy) {
|
|
129
|
-
return items;
|
|
130
|
-
}
|
|
131
|
-
const direction = sortOrder === "asc" ? 1 : -1;
|
|
132
|
-
return [...items].sort((a, b) => (this.getBrowsHistorySortTime(a, sortBy) - this.getBrowsHistorySortTime(b, sortBy)) * direction);
|
|
133
|
-
};
|
|
134
|
-
/**
|
|
135
|
-
* Paginated query on GSI `userIdIndex`.
|
|
136
|
-
*
|
|
137
|
-
* Use when: infinite scroll / load-more UI where you pass `nextToken` from previous response.
|
|
138
|
-
* For sorted "recent N" views prefer `getByUserId` instead.
|
|
139
|
-
*
|
|
140
|
-
* @example
|
|
141
|
-
* const page1 = await browsHistoryDao.listByUserId("user-123", 20);
|
|
142
|
-
* const page2 = await browsHistoryDao.listByUserId("user-123", 20, page1.nextToken);
|
|
143
|
-
*/
|
|
144
|
-
this.listByUserId = async (userId, limit, token) => {
|
|
145
|
-
const decodedToken = this.decode(token);
|
|
146
|
-
let queryBuilder = brows_history_model_1.BrowseHistoryModel.query("userId").eq(userId).using("userIdIndex");
|
|
147
|
-
if (decodedToken) {
|
|
148
|
-
queryBuilder = queryBuilder.startAt(decodedToken);
|
|
149
|
-
}
|
|
150
|
-
if (typeof limit === "number") {
|
|
151
|
-
queryBuilder = queryBuilder.limit(limit);
|
|
152
|
-
}
|
|
153
|
-
const queryResult = await queryBuilder.exec();
|
|
154
|
-
return {
|
|
155
|
-
items: queryResult,
|
|
156
|
-
nextToken: await this.encode(queryResult.lastKey)
|
|
157
|
-
};
|
|
158
|
-
};
|
|
159
|
-
/**
|
|
160
|
-
* Deletes one browse-history record by primary key.
|
|
161
|
-
*
|
|
162
|
-
* Use when: user clears a single item from browse history.
|
|
163
|
-
*
|
|
164
|
-
* @example
|
|
165
|
-
* await browsHistoryDao.deleteById("brows-history-uuid");
|
|
166
|
-
*/
|
|
167
|
-
this.deleteById = async (browsHistoryId) => {
|
|
168
|
-
await this.delete(browsHistoryId);
|
|
169
|
-
};
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
exports.browsHistoryDao = new BrowsHistoryDao();
|
|
173
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3MtaGlzdG9yeS1kYW8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY3VzdG9tZXItdXNlci9icm93cy1oaXN0b3J5L2Jyb3dzLWhpc3RvcnktZGFvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDBEQUFrQztBQUNsQyxpRUFBMEU7QUFFMUUsK0RBSStCO0FBVS9COzs7OztHQUtHO0FBQ0gsTUFBTSxlQUFnQixTQUFRLHdDQUFrQztJQUM1RDtRQUNJLEtBQUssQ0FBQyx3Q0FBa0IsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBR2pEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1dBeUJHO1FBQ0gsU0FBSSxHQUFHLEtBQUssRUFBRSxJQUE4QixFQUFFLFdBQXlCLEVBQTBCLEVBQUU7WUFDL0YsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQXFCLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDMUQsQ0FBQyxDQUFDO1FBRUY7Ozs7Ozs7Ozs7Ozs7V0FhRztRQUNILFdBQU0sR0FBRyxLQUFLLEVBQ1YsZUFBdUIsRUFDdkIsT0FBK0IsRUFDL0IsV0FBeUIsRUFDSCxFQUFFO1lBQ3hCLE1BQU0sT0FBTyxHQUFHLE1BQU0sd0NBQWtCLENBQUMsTUFBTSxDQUMzQyxFQUFFLGVBQWUsRUFBRSxFQUNuQjtnQkFDSSxHQUFHLE9BQU87Z0JBQ1YsWUFBWSxFQUFFLElBQUksSUFBSSxFQUFFO2dCQUN4QixZQUFZLEVBQUUsV0FBVyxFQUFFLE9BQU87YUFDckMsRUFDRDtnQkFDSSxTQUFTLEVBQUUsSUFBSSxtQkFBUyxDQUFDLFNBQVMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE1BQU0sRUFBRTthQUM1RSxDQUNKLENBQUM7WUFDRixPQUFPLE9BQW1DLENBQUM7UUFDL0MsQ0FBQyxDQUFDO1FBRUY7Ozs7Ozs7O1dBUUc7UUFDSCxZQUFPLEdBQUcsS0FBSyxFQUFFLGVBQXVCLEVBQWlDLEVBQUUs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WUFDN0MsQ0FBQztZQUNELE1BQU0sV0FBVyxHQUFHLE1BQU0sWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzlDLE9BQU87Z0JBQ0gsS0FBSyxFQUFFLFdBQXlDO2dCQUNoRCxTQUFTLEVBQUUsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFnQyxDQUFDO2FBQzdFLENBQUM7UUFDTixDQUFDLENBQUM7UUFFRjs7Ozs7OztXQU9HO1FBQ0gsZUFBVSxHQUFHLEtBQUssRUFBRSxjQUFzQixFQUFpQixFQUFFO1lBQ3pELE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUM7SUFyTEYsQ0FBQztDQXNMSjtBQUVZLFFBQUEsZUFBZSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZHluYW1vb3NlIGZyb20gXCJkeW5hbW9vc2VcIjtcbmltcG9ydCB7IER5bmFtb0tleSwgR2VuZXJpY0R5bmFtb29zZURBTyB9IGZyb20gXCIuLi8uLi9iYXNlLWR5bmFtb29zZS1kYW9cIjtcbmltcG9ydCB7IEF1dGhDb250ZXh0IH0gZnJvbSBcIi4uLy4uL2Jhc2UtZHluYW1vb3NlLW1vZGVsXCI7XG5pbXBvcnQge1xuICAgIEJyb3dzZUhpc3RvcnksXG4gICAgQnJvd3NlSGlzdG9yeU1vZGVsLFxuICAgIENyZWF0ZUJyb3dzZUhpc3RvcnlJbnB1dFxufSBmcm9tIFwiLi9icm93cy1oaXN0b3J5LW1vZGVsXCI7XG5cbnR5cGUgTGlzdFJlc3VsdCA9IHtcbiAgICBpdGVtczogQnJvd3NlSGlzdG9yeVtdO1xuICAgIG5leHRUb2tlbj86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEJyb3dzZUhpc3RvcnlTb3J0RmllbGQgPSBcImNyZWF0ZWRfdGltZVwiIHwgXCJ1cGRhdGVkX3RpbWVcIjtcbmV4cG9ydCB0eXBlIEJyb3dzZUhpc3RvcnlTb3J0T3JkZXIgPSBcImFzY1wiIHwgXCJkZXNjXCI7XG5cbi8qKlxuICogREFPIGZvciB1c2VyIHBsYXR0ZXIgYnJvd3NlIGhpc3RvcnkuXG4gKlxuICogVGFibGUga2V5czogYGJyb3dzSGlzdG9yeUlkYCAoUEspLlxuICogVXNlciBsb29rdXA6IHF1ZXJ5IEdTSSBgdXNlcklkSW5kZXhgIGJ5IGB1c2VySWRgLlxuICovXG5jbGFzcyBCcm93c0hpc3RvcnlEYW8gZXh0ZW5kcyBHZW5lcmljRHluYW1vb3NlREFPPEJyb3dzZUhpc3Rvcnk+IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoQnJvd3NlSGlzdG9yeU1vZGVsLCBcImJyb3dzZUhpc3RvcnlJZFwiKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIG9uZSBicm93c2UtaGlzdG9yeSByZWNvcmQuXG4gICAgICpcbiAgICAgKiBVc2Ugd2hlbjogdXNlciB2aWV3cyBhIHBsYXR0ZXIgYW5kIHlvdSB3YW50IHRvIHBlcnNpc3QgdGhhdCBicm93c2UgZXZlbnQuXG4gICAgICogLSBgYnJvd3NIaXN0b3J5SWRgIGF1dG8tZ2VuZXJhdGVzIGlmIG9taXR0ZWQuXG4gICAgICogLSBgdXNlcklkYCBpcyByZXF1aXJlZCBmb3IgbGF0ZXIgYGdldEJ5VXNlcklkYCAvIGBsaXN0QnlVc2VySWRgIGxvb2t1cHMuXG4gICAgICogLSBTdGFtcHMgYGNyZWF0ZWRfdGltZWAgLyBgY3JlYXRlZF91c2VyYCBhdXRvbWF0aWNhbGx5LlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBhd2FpdCBicm93c0hpc3RvcnlEYW8uc2F2ZSh7XG4gICAgICogICAgIHVzZXJJZDogXCJ1c2VyLTEyM1wiLFxuICAgICAqICAgICBwbGF0dGVySWQ6IFwicGxhdHRlci1hYmNcIixcbiAgICAgKiAgICAgcGxhdHRlck5hbWU6IFwiQmlydGhkYXkgRmVhc3RcIixcbiAgICAgKiAgICAgcGxhdHRlclR5cGU6IFwiQ0FURVJJTkdcIixcbiAgICAgKiAgICAgcGxhdHRlclByaWNlOiA0OTk5LFxuICAgICAqICAgICB0b3RhbEl0ZW1zOiAxMixcbiAgICAgKiAgICAgbWVudVR5cGU6IFwiVkVHXCIsXG4gICAgICogICAgIG1lYWxUaW1lOiBcIkRpbm5lclwiLFxuICAgICAqICAgICBwbGF0dGVySW1hZ2U6IFwiaHR0cHM6Ly8uLi5cIixcbiAgICAgKiAgICAgcmVwbGFjZUl0ZW1JZHM6IFt7IG9yaWdpbmFsSXRlbUlkOiBcIml0ZW0tMVwiLCByZXBsYWNlSXRlbUlkOiBcIml0ZW0tMlwiIH1dLFxuICAgICAqICAgICBhZGRvbklkczogW10sXG4gICAgICogICAgIGN1dGxlcnlJZHM6IFtdLFxuICAgICAqICAgICBsaXZlQ291bnRlcklkczogW10sXG4gICAgICogICAgIHNrZXdlckFkZG9uSWRzOiBbXVxuICAgICAqIH0sIHsgdXNlclN1YjogXCJ1c2VyLTEyM1wiIH0pO1xuICAgICAqL1xuICAgIHNhdmUgPSBhc3luYyAoaXRlbTogQ3JlYXRlQnJvd3NlSGlzdG9yeUlucHV0LCBhdXRoQ29udGV4dD86IEF1dGhDb250ZXh0KTogUHJvbWlzZTxCcm93c2VIaXN0b3J5PiA9PiB7XG4gICAgICAgIHJldHVybiBzdXBlci5zYXZlKGl0ZW0gYXMgQnJvd3NlSGlzdG9yeSwgYXV0aENvbnRleHQpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIG9uZSBicm93c2UtaGlzdG9yeSByZWNvcmQgYnkgYGJyb3dzSGlzdG9yeUlkYC5cbiAgICAgKlxuICAgICAqIFVzZSB3aGVuOiB1c2VyIHJlLXZpc2l0cyBzYW1lIHBsYXR0ZXIgYW5kIHlvdSBuZWVkIHRvIHVwZGF0ZSBzZWxlY3Rpb25zIG9yIG1ldGFkYXRhLlxuICAgICAqIC0gRmFpbHMgaWYgdGhlIHJlY29yZCBkb2VzIG5vdCBleGlzdC5cbiAgICAgKiAtIFN0YW1wcyBgdXBkYXRlZF90aW1lYCAvIGB1cGRhdGVkX3VzZXJgIGF1dG9tYXRpY2FsbHkuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGF3YWl0IGJyb3dzSGlzdG9yeURhby51cGRhdGUoXG4gICAgICogICAgIFwiYnJvd3MtaGlzdG9yeS11dWlkXCIsXG4gICAgICogICAgIHsgYWRkb25JZHM6IFtcImFkZG9uLTFcIiwgXCJhZGRvbi0yXCJdLCBwbGF0dGVyUHJpY2U6IDU0OTkgfSxcbiAgICAgKiAgICAgeyB1c2VyU3ViOiBcInVzZXItMTIzXCIgfVxuICAgICAqICk7XG4gICAgICovXG4gICAgdXBkYXRlID0gYXN5bmMgKFxuICAgICAgICBicm93c2VIaXN0b3J5SWQ6IHN0cmluZyxcbiAgICAgICAgdXBkYXRlczogUGFydGlhbDxCcm93c2VIaXN0b3J5PixcbiAgICAgICAgYXV0aENvbnRleHQ/OiBBdXRoQ29udGV4dFxuICAgICk6IFByb21pc2U8QnJvd3NlSGlzdG9yeT4gPT4ge1xuICAgICAgICBjb25zdCB1cGRhdGVkID0gYXdhaXQgQnJvd3NlSGlzdG9yeU1vZGVsLnVwZGF0ZShcbiAgICAgICAgICAgIHsgYnJvd3NlSGlzdG9yeUlkIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLi4udXBkYXRlcyxcbiAgICAgICAgICAgICAgICB1cGRhdGVkX3RpbWU6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICAgICAgdXBkYXRlZF91c2VyOiBhdXRoQ29udGV4dD8udXNlclN1YlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb25kaXRpb246IG5ldyBkeW5hbW9vc2UuQ29uZGl0aW9uKCkuYXR0cmlidXRlKFwiYnJvd3NIaXN0b3J5SWRcIikuZXhpc3RzKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHVwZGF0ZWQgYXMgdW5rbm93biBhcyBCcm93c2VIaXN0b3J5O1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBGZXRjaGVzIG9uZSBicm93c2UtaGlzdG9yeSByZWNvcmQgYnkgcHJpbWFyeSBrZXkuXG4gICAgICpcbiAgICAgKiBVc2Ugd2hlbjogZGV0YWlsIHNjcmVlbiBhbHJlYWR5IGhhcyBgYnJvd3NIaXN0b3J5SWRgIGZyb20gYSBwcmV2aW91cyBsaXN0IHJlc3BvbnNlLlxuICAgICAqIFJldHVybnMgYG51bGxgIHdoZW4gcmVjb3JkIGlzIG5vdCBmb3VuZC5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogY29uc3QgaXRlbSA9IGF3YWl0IGJyb3dzSGlzdG9yeURhby5nZXRCeUlkKFwiYnJvd3MtaGlzdG9yeS11dWlkXCIpO1xuICAgICAqL1xuICAgIGdldEJ5SWQgPSBhc3luYyAoYnJvd3NlSGlzdG9yeUlkOiBzdHJpbmcpOiBQcm9taXNlPEJyb3dzZUhpc3RvcnkgfCBudWxsPiA9PiB0aGlzLmdldChicm93c2VIaXN0b3J5SWQpO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBicm93c2UtaGlzdG9yeSBmb3IgYSB1c2VyIHdpdGggb3B0aW9uYWwgc29ydCBhbmQgbGltaXQuXG4gICAgICpcbiAgICAgKiBVc2Ugd2hlbjogc2hvd2luZyBcIlJlY2VudGx5IFZpZXdlZFwiIG9yIGZ1bGwgYnJvd3NlIGhpc3Rvcnkgb24gaG9tZS9wcm9maWxlIHNjcmVlbi5cbiAgICAgKiAtIFF1ZXJpZXMgYWxsIHBhZ2VzIGZyb20gR1NJIGB1c2VySWRJbmRleGAsIHRoZW4gc29ydHMgaW4gbWVtb3J5LlxuICAgICAqIC0gUGFzcyBgc29ydEJ5YCBhcyBgXCJjcmVhdGVkX3RpbWVcImAgb3IgYFwidXBkYXRlZF90aW1lXCJgIHRvIG9yZGVyIHJlc3VsdHMuXG4gICAgICogLSBEZWZhdWx0IGBzb3J0T3JkZXJgIGlzIGBcImRlc2NcImAgKG5ld2VzdCBmaXJzdCkuXG4gICAgICogLSBgbGltaXRgIGlzIGFwcGxpZWQgYWZ0ZXIgc29ydGluZyBzbyBsYXRlc3QgTiBpdGVtcyBhcmUgcmV0dXJuZWQgY29ycmVjdGx5LlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiAvLyBMYXRlc3QgMTAgYnJvd3NlZCBwbGF0dGVycyAobW9zdCByZWNlbnRseSB1cGRhdGVkIGZpcnN0KVxuICAgICAqIGNvbnN0IHJlY2VudCA9IGF3YWl0IGJyb3dzSGlzdG9yeURhby5nZXRCeVVzZXJJZChcInVzZXItMTIzXCIsIDEwLCBcInVwZGF0ZWRfdGltZVwiKTtcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogLy8gT2xkZXN0IHZpZXdlZCBmaXJzdFxuICAgICAqIGNvbnN0IG9sZGVzdEZpcnN0ID0gYXdhaXQgYnJvd3NIaXN0b3J5RGFvLmdldEJ5VXNlcklkKFwidXNlci0xMjNcIiwgdW5kZWZpbmVkLCBcImNyZWF0ZWRfdGltZVwiLCBcImFzY1wiKTtcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogLy8gQWxsIGhpc3Rvcnkgd2l0aG91dCBzb3J0aW5nIChyYXcgRHluYW1vREIgb3JkZXIpXG4gICAgICogY29uc3QgYWxsID0gYXdhaXQgYnJvd3NIaXN0b3J5RGFvLmdldEJ5VXNlcklkKFwidXNlci0xMjNcIik7XG4gICAgICovXG4gICAgZ2V0QnlVc2VySWQgPSBhc3luYyAoXG4gICAgICAgIHVzZXJJZDogc3RyaW5nLFxuICAgICAgICBsaW1pdD86IG51bWJlcixcbiAgICAgICAgc29ydEJ5PzogQnJvd3NlSGlzdG9yeVNvcnRGaWVsZCxcbiAgICAgICAgc29ydE9yZGVyOiBCcm93c2VIaXN0b3J5U29ydE9yZGVyID0gXCJkZXNjXCJcbiAgICApOiBQcm9taXNlPEJyb3dzZUhpc3RvcnlbXT4gPT4ge1xuICAgICAgICBjb25zdCBpdGVtczogQnJvd3NlSGlzdG9yeVtdID0gW107XG4gICAgICAgIGxldCB0b2tlbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMubGlzdEJ5VXNlcklkKHVzZXJJZCwgdW5kZWZpbmVkLCB0b2tlbik7XG4gICAgICAgICAgICBpdGVtcy5wdXNoKC4uLnJlc3VsdC5pdGVtcyk7XG4gICAgICAgICAgICB0b2tlbiA9IHJlc3VsdC5uZXh0VG9rZW47XG4gICAgICAgIH0gd2hpbGUgKHRva2VuKTtcblxuICAgICAgICBjb25zdCBzb3J0ZWRJdGVtcyA9IHRoaXMuc29ydEJyb3dzSGlzdG9yeUl0ZW1zKGl0ZW1zLCBzb3J0QnksIHNvcnRPcmRlcik7XG4gICAgICAgIHJldHVybiB0eXBlb2YgbGltaXQgPT09IFwibnVtYmVyXCIgPyBzb3J0ZWRJdGVtcy5zbGljZSgwLCBsaW1pdCkgOiBzb3J0ZWRJdGVtcztcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogUmVhZHMgdGltZXN0YW1wIGZyb20gYXVkaXQgZmllbGQgdXNlZCBmb3IgaW4tbWVtb3J5IHNvcnRpbmcuXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRCcm93c0hpc3RvcnlTb3J0VGltZSA9IChpdGVtOiBCcm93c2VIaXN0b3J5LCBmaWVsZDogQnJvd3NlSGlzdG9yeVNvcnRGaWVsZCk6IG51bWJlciA9PiB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gaXRlbVtmaWVsZF07XG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZS5nZXRUaW1lKCkgOiBuZXcgRGF0ZSh2YWx1ZSkuZ2V0VGltZSgpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBTb3J0cyBicm93c2UtaGlzdG9yeSBpdGVtcyBieSBgY3JlYXRlZF90aW1lYCBvciBgdXBkYXRlZF90aW1lYC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHNvcnRCcm93c0hpc3RvcnlJdGVtcyA9IChcbiAgICAgICAgaXRlbXM6IEJyb3dzZUhpc3RvcnlbXSxcbiAgICAgICAgc29ydEJ5PzogQnJvd3NlSGlzdG9yeVNvcnRGaWVsZCxcbiAgICAgICAgc29ydE9yZGVyOiBCcm93c2VIaXN0b3J5U29ydE9yZGVyID0gXCJkZXNjXCJcbiAgICApOiBCcm93c2VIaXN0b3J5W10gPT4ge1xuICAgICAgICBpZiAoIXNvcnRCeSkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGlyZWN0aW9uID0gc29ydE9yZGVyID09PSBcImFzY1wiID8gMSA6IC0xO1xuICAgICAgICByZXR1cm4gWy4uLml0ZW1zXS5zb3J0KFxuICAgICAgICAgICAgKGEsIGIpID0+ICh0aGlzLmdldEJyb3dzSGlzdG9yeVNvcnRUaW1lKGEsIHNvcnRCeSkgLSB0aGlzLmdldEJyb3dzSGlzdG9yeVNvcnRUaW1lKGIsIHNvcnRCeSkpICogZGlyZWN0aW9uXG4gICAgICAgICk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFBhZ2luYXRlZCBxdWVyeSBvbiBHU0kgYHVzZXJJZEluZGV4YC5cbiAgICAgKlxuICAgICAqIFVzZSB3aGVuOiBpbmZpbml0ZSBzY3JvbGwgLyBsb2FkLW1vcmUgVUkgd2hlcmUgeW91IHBhc3MgYG5leHRUb2tlbmAgZnJvbSBwcmV2aW91cyByZXNwb25zZS5cbiAgICAgKiBGb3Igc29ydGVkIFwicmVjZW50IE5cIiB2aWV3cyBwcmVmZXIgYGdldEJ5VXNlcklkYCBpbnN0ZWFkLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBjb25zdCBwYWdlMSA9IGF3YWl0IGJyb3dzSGlzdG9yeURhby5saXN0QnlVc2VySWQoXCJ1c2VyLTEyM1wiLCAyMCk7XG4gICAgICogY29uc3QgcGFnZTIgPSBhd2FpdCBicm93c0hpc3RvcnlEYW8ubGlzdEJ5VXNlcklkKFwidXNlci0xMjNcIiwgMjAsIHBhZ2UxLm5leHRUb2tlbik7XG4gICAgICovXG4gICAgbGlzdEJ5VXNlcklkID0gYXN5bmMgKHVzZXJJZDogc3RyaW5nLCBsaW1pdD86IG51bWJlciwgdG9rZW4/OiBzdHJpbmcpOiBQcm9taXNlPExpc3RSZXN1bHQ+ID0+IHtcbiAgICAgICAgY29uc3QgZGVjb2RlZFRva2VuID0gdGhpcy5kZWNvZGUodG9rZW4pO1xuICAgICAgICBsZXQgcXVlcnlCdWlsZGVyID0gQnJvd3NlSGlzdG9yeU1vZGVsLnF1ZXJ5KFwidXNlcklkXCIpLmVxKHVzZXJJZCkudXNpbmcoXCJ1c2VySWRJbmRleFwiKTtcbiAgICAgICAgaWYgKGRlY29kZWRUb2tlbikge1xuICAgICAgICAgICAgcXVlcnlCdWlsZGVyID0gcXVlcnlCdWlsZGVyLnN0YXJ0QXQoZGVjb2RlZFRva2VuKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIGxpbWl0ID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICBxdWVyeUJ1aWxkZXIgPSBxdWVyeUJ1aWxkZXIubGltaXQobGltaXQpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHF1ZXJ5UmVzdWx0ID0gYXdhaXQgcXVlcnlCdWlsZGVyLmV4ZWMoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGl0ZW1zOiBxdWVyeVJlc3VsdCBhcyB1bmtub3duIGFzIEJyb3dzZUhpc3RvcnlbXSxcbiAgICAgICAgICAgIG5leHRUb2tlbjogYXdhaXQgdGhpcy5lbmNvZGUocXVlcnlSZXN1bHQubGFzdEtleSBhcyBEeW5hbW9LZXkgfCB1bmRlZmluZWQpXG4gICAgICAgIH07XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIERlbGV0ZXMgb25lIGJyb3dzZS1oaXN0b3J5IHJlY29yZCBieSBwcmltYXJ5IGtleS5cbiAgICAgKlxuICAgICAqIFVzZSB3aGVuOiB1c2VyIGNsZWFycyBhIHNpbmdsZSBpdGVtIGZyb20gYnJvd3NlIGhpc3RvcnkuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGF3YWl0IGJyb3dzSGlzdG9yeURhby5kZWxldGVCeUlkKFwiYnJvd3MtaGlzdG9yeS11dWlkXCIpO1xuICAgICAqL1xuICAgIGRlbGV0ZUJ5SWQgPSBhc3luYyAoYnJvd3NIaXN0b3J5SWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLmRlbGV0ZShicm93c0hpc3RvcnlJZCk7XG4gICAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IGJyb3dzSGlzdG9yeURhbyA9IG5ldyBCcm93c0hpc3RvcnlEYW8oKTtcbiJdfQ==
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.convertToBrowseHistoryModel = exports.BrowseHistoryModel = void 0;
|
|
7
|
-
const dynamoose_1 = __importDefault(require("dynamoose"));
|
|
8
|
-
const crypto_1 = require("crypto");
|
|
9
|
-
const base_dynamoose_model_1 = require("../../base-dynamoose-model");
|
|
10
|
-
const table_names_1 = require("../../config/table-names");
|
|
11
|
-
const browseHistorySchema = new dynamoose_1.default.Schema({
|
|
12
|
-
browseHistoryId: {
|
|
13
|
-
type: String,
|
|
14
|
-
hashKey: true,
|
|
15
|
-
required: true,
|
|
16
|
-
default: () => (0, crypto_1.randomUUID)()
|
|
17
|
-
},
|
|
18
|
-
userId: {
|
|
19
|
-
type: String,
|
|
20
|
-
required: true,
|
|
21
|
-
index: {
|
|
22
|
-
name: "userIdIndex",
|
|
23
|
-
type: "global"
|
|
24
|
-
}
|
|
25
|
-
},
|
|
26
|
-
resumeJourneyId: {
|
|
27
|
-
type: String,
|
|
28
|
-
required: true
|
|
29
|
-
},
|
|
30
|
-
platterId: {
|
|
31
|
-
type: String,
|
|
32
|
-
required: true
|
|
33
|
-
},
|
|
34
|
-
platterName: {
|
|
35
|
-
type: String,
|
|
36
|
-
required: true
|
|
37
|
-
},
|
|
38
|
-
platterType: {
|
|
39
|
-
type: String,
|
|
40
|
-
required: true
|
|
41
|
-
},
|
|
42
|
-
platterSubType: String,
|
|
43
|
-
platterPrice: {
|
|
44
|
-
type: Number,
|
|
45
|
-
required: true
|
|
46
|
-
},
|
|
47
|
-
totalItems: {
|
|
48
|
-
type: Number,
|
|
49
|
-
required: true
|
|
50
|
-
},
|
|
51
|
-
menuType: {
|
|
52
|
-
type: String,
|
|
53
|
-
required: true
|
|
54
|
-
},
|
|
55
|
-
mealTime: {
|
|
56
|
-
type: String,
|
|
57
|
-
required: true
|
|
58
|
-
},
|
|
59
|
-
platterImage: {
|
|
60
|
-
type: String,
|
|
61
|
-
required: true
|
|
62
|
-
},
|
|
63
|
-
replaceItemIds: {
|
|
64
|
-
type: Array,
|
|
65
|
-
schema: [{
|
|
66
|
-
type: Object,
|
|
67
|
-
schema: {
|
|
68
|
-
originalItemId: {
|
|
69
|
-
type: String,
|
|
70
|
-
required: true
|
|
71
|
-
},
|
|
72
|
-
replaceItemId: {
|
|
73
|
-
type: String,
|
|
74
|
-
required: true
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}],
|
|
78
|
-
default: []
|
|
79
|
-
},
|
|
80
|
-
addonIds: {
|
|
81
|
-
type: Array,
|
|
82
|
-
schema: [String],
|
|
83
|
-
default: []
|
|
84
|
-
},
|
|
85
|
-
cutleryIds: {
|
|
86
|
-
type: Array,
|
|
87
|
-
schema: [String],
|
|
88
|
-
default: []
|
|
89
|
-
},
|
|
90
|
-
liveCounterIds: {
|
|
91
|
-
type: Array,
|
|
92
|
-
schema: [String],
|
|
93
|
-
default: []
|
|
94
|
-
},
|
|
95
|
-
skewerAddonIds: {
|
|
96
|
-
type: Array,
|
|
97
|
-
schema: [String],
|
|
98
|
-
default: []
|
|
99
|
-
},
|
|
100
|
-
...base_dynamoose_model_1.BASE_DYNAMOOSE_AUDIT_SCHEMA
|
|
101
|
-
}, {
|
|
102
|
-
saveUnknown: false,
|
|
103
|
-
timestamps: true
|
|
104
|
-
});
|
|
105
|
-
exports.BrowseHistoryModel = dynamoose_1.default.model(table_names_1.TABLE_NAMES.BROWSE_HISTORY, browseHistorySchema, { create: false, waitForActive: false });
|
|
106
|
-
const convertToBrowseHistoryModel = (input) => {
|
|
107
|
-
return new exports.BrowseHistoryModel(input);
|
|
108
|
-
};
|
|
109
|
-
exports.convertToBrowseHistoryModel = convertToBrowseHistoryModel;
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3MtaGlzdG9yeS1tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jdXN0b21lci11c2VyL2Jyb3dzLWhpc3RvcnkvYnJvd3MtaGlzdG9yeS1tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwwREFBa0M7QUFDbEMsbUNBQW9DO0FBQ3BDLHFFQUE2RjtBQUM3RiwwREFBdUQ7QUErQnZELE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxtQkFBUyxDQUFDLE1BQU0sQ0FDNUM7SUFDSSxlQUFlLEVBQUU7UUFDYixJQUFJLEVBQUUsTUFBTTtRQUNaLE9BQU8sRUFBRSxJQUFJO1FBQ2IsUUFBUSxFQUFFLElBQUk7UUFDZCxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBQSxtQkFBVSxHQUFFO0tBQzlCO0lBQ0QsTUFBTSxFQUFFO1FBQ0osSUFBSSxFQUFFLE1BQU07UUFDWixRQUFRLEVBQUUsSUFBSTtRQUNkLEtBQUssRUFBRTtZQUNILElBQUksRUFBRSxhQUFhO1lBQ25CLElBQUksRUFBRSxRQUFRO1NBQ2pCO0tBQ0o7SUFDRCxlQUFlLEVBQUU7UUFDYixJQUFJLEVBQUUsTUFBTTtRQUNaLFFBQVEsRUFBRSxJQUFJO0tBQ2pCO0lBQ0QsU0FBUyxFQUFFO1FBQ1AsSUFBSSxFQUFFLE1BQU07UUFDWixRQUFRLEVBQUUsSUFBSTtLQUNqQjtJQUNELFdBQVcsRUFBRTtRQUNULElBQUksRUFBRSxNQUFNO1FBQ1osUUFBUSxFQUFFLElBQUk7S0FDakI7SUFDRCxXQUFXLEVBQUU7UUFDVCxJQUFJLEVBQUUsTUFBTTtRQUNaLFFBQVEsRUFBRSxJQUFJO0tBQ2pCO0lBQ0QsY0FBYyxFQUFFLE1BQU07SUFDdEIsWUFBWSxFQUFFO1FBQ1YsSUFBSSxFQUFFLE1BQU07UUFDWixRQUFRLEVBQUUsSUFBSTtLQUNqQjtJQUNELFVBQVUsRUFBRTtRQUNSLElBQUksRUFBRSxNQUFNO1FBQ1osUUFBUSxFQUFFLElBQUk7S0FDakI7SUFDRCxRQUFRLEVBQUU7UUFDTixJQUFJLEVBQUUsTUFBTTtRQUNaLFFBQVEsRUFBRSxJQUFJO0tBQ2pCO0lBQ0QsUUFBUSxFQUFFO1FBQ04sSUFBSSxFQUFFLE1BQU07UUFDWixRQUFRLEVBQUUsSUFBSTtLQUNqQjtJQUNELFlBQVksRUFBRTtRQUNWLElBQUksRUFBRSxNQUFNO1FBQ1osUUFBUSxFQUFFLElBQUk7S0FDakI7SUFDRCxjQUFjLEVBQUU7UUFDWixJQUFJLEVBQUUsS0FBSztRQUNYLE1BQU0sRUFBRSxDQUFDO2dCQUNMLElBQUksRUFBRSxNQUFNO2dCQUNaLE1BQU0sRUFBRTtvQkFDSixjQUFjLEVBQUU7d0JBQ1osSUFBSSxFQUFFLE1BQU07d0JBQ1osUUFBUSxFQUFFLElBQUk7cUJBQ2pCO29CQUNELGFBQWEsRUFBRTt3QkFDWCxJQUFJLEVBQUUsTUFBTTt3QkFDWixRQUFRLEVBQUUsSUFBSTtxQkFDakI7aUJBQ0o7YUFDSixDQUFDO1FBQ0YsT0FBTyxFQUFFLEVBQUU7S0FDZDtJQUNELFFBQVEsRUFBRTtRQUNOLElBQUksRUFBRSxLQUFLO1FBQ1gsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDO1FBQ2hCLE9BQU8sRUFBRSxFQUFFO0tBQ2Q7SUFDRCxVQUFVLEVBQUU7UUFDUixJQUFJLEVBQUUsS0FBSztRQUNYLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQztRQUNoQixPQUFPLEVBQUUsRUFBRTtLQUNkO0lBQ0QsY0FBYyxFQUFFO1FBQ1osSUFBSSxFQUFFLEtBQUs7UUFDWCxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUM7UUFDaEIsT0FBTyxFQUFFLEVBQUU7S0FDZDtJQUNELGNBQWMsRUFBRTtRQUNaLElBQUksRUFBRSxLQUFLO1FBQ1gsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDO1FBQ2hCLE9BQU8sRUFBRSxFQUFFO0tBQ2Q7SUFDRCxHQUFHLGtEQUEyQjtDQUNqQyxFQUNEO0lBQ0ksV0FBVyxFQUFFLEtBQUs7SUFDbEIsVUFBVSxFQUFFLElBQUk7Q0FDbkIsQ0FDSixDQUFDO0FBRVcsUUFBQSxrQkFBa0IsR0FBRyxtQkFBUyxDQUFDLEtBQUssQ0FDN0MseUJBQVcsQ0FBQyxjQUFjLEVBQzFCLG1CQUFtQixFQUNuQixFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxDQUMxQyxDQUFDO0FBRUssTUFBTSwyQkFBMkIsR0FBRyxDQUFDLEtBQStDLEVBQUUsRUFBRTtJQUMzRixPQUFPLElBQUksMEJBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDekMsQ0FBQyxDQUFDO0FBRlcsUUFBQSwyQkFBMkIsK0JBRXRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGR5bmFtb29zZSBmcm9tIFwiZHluYW1vb3NlXCI7XG5pbXBvcnQgeyByYW5kb21VVUlEIH0gZnJvbSBcImNyeXB0b1wiO1xuaW1wb3J0IHsgQkFTRV9EWU5BTU9PU0VfQVVESVRfU0NIRU1BLCBCYXNlRHluYW1vb3NlTW9kZWwgfSBmcm9tIFwiLi4vLi4vYmFzZS1keW5hbW9vc2UtbW9kZWxcIjtcbmltcG9ydCB7IFRBQkxFX05BTUVTIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy90YWJsZS1uYW1lc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJyb3dzSGlzdG9yeVJlcGxhY2VJdGVtIHtcbiAgICBvcmlnaW5hbEl0ZW1JZDogc3RyaW5nO1xuICAgIHJlcGxhY2VJdGVtSWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCcm93c2VIaXN0b3J5IGV4dGVuZHMgQmFzZUR5bmFtb29zZU1vZGVsIHtcbiAgICBicm93c2VIaXN0b3J5SWQ6IHN0cmluZztcbiAgICB1c2VySWQ6IHN0cmluZztcbiAgICByZXN1bWVKb3VybmV5SWQ6IHN0cmluZztcbiAgICBwbGF0dGVySWQ6IHN0cmluZztcbiAgICBwbGF0dGVyTmFtZTogc3RyaW5nO1xuICAgIHBsYXR0ZXJUeXBlOiBzdHJpbmc7XG4gICAgcGxhdHRlclN1YlR5cGU/OiBzdHJpbmc7XG4gICAgcGxhdHRlclByaWNlOiBudW1iZXI7XG4gICAgdG90YWxJdGVtczogbnVtYmVyO1xuICAgIG1lbnVUeXBlOiBzdHJpbmc7XG4gICAgbWVhbFRpbWU6IHN0cmluZztcbiAgICBwbGF0dGVySW1hZ2U6IHN0cmluZztcbiAgICByZXBsYWNlSXRlbUlkczogQnJvd3NIaXN0b3J5UmVwbGFjZUl0ZW1bXTtcbiAgICBhZGRvbklkczogc3RyaW5nW107XG4gICAgY3V0bGVyeUlkczogc3RyaW5nW107XG4gICAgbGl2ZUNvdW50ZXJJZHM6IHN0cmluZ1tdO1xuICAgIHNrZXdlckFkZG9uSWRzOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IHR5cGUgQ3JlYXRlQnJvd3NlSGlzdG9yeUlucHV0ID0gT21pdDxCcm93c2VIaXN0b3J5LCBcImJyb3dzZUhpc3RvcnlJZFwiPiAmIHtcbiAgICBicm93c2VIaXN0b3J5SWQ/OiBzdHJpbmc7XG59O1xuXG5jb25zdCBicm93c2VIaXN0b3J5U2NoZW1hID0gbmV3IGR5bmFtb29zZS5TY2hlbWEoXG4gICAge1xuICAgICAgICBicm93c2VIaXN0b3J5SWQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIGhhc2hLZXk6IHRydWUsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6ICgpID0+IHJhbmRvbVVVSUQoKVxuICAgICAgICB9LFxuICAgICAgICB1c2VySWQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgaW5kZXg6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBcInVzZXJJZEluZGV4XCIsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJnbG9iYWxcIlxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICByZXN1bWVKb3VybmV5SWQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHBsYXR0ZXJJZDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgcGxhdHRlck5hbWU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHBsYXR0ZXJUeXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBwbGF0dGVyU3ViVHlwZTogU3RyaW5nLFxuICAgICAgICBwbGF0dGVyUHJpY2U6IHtcbiAgICAgICAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHRvdGFsSXRlbXM6IHtcbiAgICAgICAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIG1lbnVUeXBlOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBtZWFsVGltZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgcGxhdHRlckltYWdlOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICByZXBsYWNlSXRlbUlkczoge1xuICAgICAgICAgICAgdHlwZTogQXJyYXksXG4gICAgICAgICAgICBzY2hlbWE6IFt7XG4gICAgICAgICAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICAgICAgICAgIHNjaGVtYToge1xuICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbEl0ZW1JZDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcmVwbGFjZUl0ZW1JZDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1dLFxuICAgICAgICAgICAgZGVmYXVsdDogW11cbiAgICAgICAgfSxcbiAgICAgICAgYWRkb25JZHM6IHtcbiAgICAgICAgICAgIHR5cGU6IEFycmF5LFxuICAgICAgICAgICAgc2NoZW1hOiBbU3RyaW5nXSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IFtdXG4gICAgICAgIH0sXG4gICAgICAgIGN1dGxlcnlJZHM6IHtcbiAgICAgICAgICAgIHR5cGU6IEFycmF5LFxuICAgICAgICAgICAgc2NoZW1hOiBbU3RyaW5nXSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IFtdXG4gICAgICAgIH0sXG4gICAgICAgIGxpdmVDb3VudGVySWRzOiB7XG4gICAgICAgICAgICB0eXBlOiBBcnJheSxcbiAgICAgICAgICAgIHNjaGVtYTogW1N0cmluZ10sXG4gICAgICAgICAgICBkZWZhdWx0OiBbXVxuICAgICAgICB9LFxuICAgICAgICBza2V3ZXJBZGRvbklkczoge1xuICAgICAgICAgICAgdHlwZTogQXJyYXksXG4gICAgICAgICAgICBzY2hlbWE6IFtTdHJpbmddLFxuICAgICAgICAgICAgZGVmYXVsdDogW11cbiAgICAgICAgfSxcbiAgICAgICAgLi4uQkFTRV9EWU5BTU9PU0VfQVVESVRfU0NIRU1BXG4gICAgfSxcbiAgICB7XG4gICAgICAgIHNhdmVVbmtub3duOiBmYWxzZSxcbiAgICAgICAgdGltZXN0YW1wczogdHJ1ZVxuICAgIH1cbik7XG5cbmV4cG9ydCBjb25zdCBCcm93c2VIaXN0b3J5TW9kZWwgPSBkeW5hbW9vc2UubW9kZWw8QnJvd3NlSGlzdG9yeT4oXG4gICAgVEFCTEVfTkFNRVMuQlJPV1NFX0hJU1RPUlksXG4gICAgYnJvd3NlSGlzdG9yeVNjaGVtYSxcbiAgICB7IGNyZWF0ZTogZmFsc2UsIHdhaXRGb3JBY3RpdmU6IGZhbHNlIH1cbik7XG5cbmV4cG9ydCBjb25zdCBjb252ZXJ0VG9Ccm93c2VIaXN0b3J5TW9kZWwgPSAoaW5wdXQ6IENyZWF0ZUJyb3dzZUhpc3RvcnlJbnB1dCB8IEJyb3dzZUhpc3RvcnkpID0+IHtcbiAgICByZXR1cm4gbmV3IEJyb3dzZUhpc3RvcnlNb2RlbChpbnB1dCk7XG59O1xuIl19
|
|
File without changes
|