cmp-aws-database 2.1.2-dev.7 → 2.1.2-dev.70
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/config/table-names.d.ts +14 -0
- package/dist/config/table-names.js +15 -1
- package/dist/customer-user/accompaniments/accompaniments-model.d.ts +1 -0
- package/dist/customer-user/accompaniments/accompaniments-model.js +5 -1
- package/dist/customer-user/add-ons/add-ons-model.d.ts +3 -0
- package/dist/customer-user/add-ons/add-ons-model.js +13 -1
- package/dist/customer-user/browse-history/browse-history-dao.d.ts +122 -0
- package/dist/customer-user/browse-history/browse-history-dao.js +173 -0
- package/dist/customer-user/browse-history/browse-history-model.d.ts +31 -0
- package/dist/customer-user/browse-history/browse-history-model.js +118 -0
- package/dist/customer-user/cart/cart-categories-model.d.ts +6 -2
- package/dist/customer-user/cart/cart-categories-model.js +15 -3
- package/dist/customer-user/cart/cart-model.d.ts +14 -0
- package/dist/customer-user/cart/cart-model.js +48 -2
- package/dist/customer-user/category/category-dao.d.ts +29 -0
- package/dist/customer-user/category/category-dao.js +52 -1
- package/dist/customer-user/category/category-model.d.ts +1 -0
- package/dist/customer-user/category/category-model.js +5 -1
- package/dist/customer-user/cutlery/cutlery-model.d.ts +3 -0
- package/dist/customer-user/cutlery/cutlery-model.js +13 -1
- package/dist/customer-user/default-platter/default-platters-model.d.ts +2 -0
- package/dist/customer-user/default-platter/default-platters-model.js +9 -1
- package/dist/customer-user/default-platter/default_platters_items.d.ts +1 -0
- package/dist/customer-user/default-platter/default_platters_items.js +5 -1
- package/dist/customer-user/elphie/elphie-errors.d.ts +15 -0
- package/dist/customer-user/elphie/elphie-errors.js +31 -0
- package/dist/customer-user/elphie/elphie-message-dao.d.ts +51 -0
- package/dist/customer-user/elphie/elphie-message-dao.js +160 -0
- package/dist/customer-user/elphie/elphie-message-model.d.ts +25 -0
- package/dist/customer-user/elphie/elphie-message-model.js +78 -0
- package/dist/customer-user/elphie/elphie-session-dao.d.ts +46 -0
- package/dist/customer-user/elphie/elphie-session-dao.js +134 -0
- package/dist/customer-user/elphie/elphie-session-model.d.ts +26 -0
- package/dist/customer-user/elphie/elphie-session-model.js +55 -0
- package/dist/customer-user/fmpRequestCallback/fmp-request-callback-model.d.ts +1 -0
- package/dist/customer-user/fmpRequestCallback/fmp-request-callback-model.js +5 -1
- package/dist/customer-user/items/items-model.d.ts +2 -0
- package/dist/customer-user/items/items-model.js +9 -1
- package/dist/customer-user/items-bundle/items-bundle-dao.d.ts +72 -0
- package/dist/customer-user/items-bundle/items-bundle-dao.js +117 -0
- package/dist/customer-user/items-bundle/items-bundle-model.d.ts +23 -0
- package/dist/customer-user/items-bundle/items-bundle-model.js +62 -0
- package/dist/customer-user/lsq-priority-updation/lsq-priority-updation-dao.d.ts +140 -0
- package/dist/customer-user/lsq-priority-updation/lsq-priority-updation-dao.js +253 -0
- package/dist/customer-user/lsq-priority-updation/lsq-priority-updation-model.d.ts +63 -0
- package/dist/customer-user/lsq-priority-updation/lsq-priority-updation-model.js +135 -0
- package/dist/customer-user/order-module/order/order-model.d.ts +1 -0
- package/dist/customer-user/order-module/order/order-model.js +5 -1
- package/dist/customer-user/order-module/plate-order/plate-order-model.d.ts +20 -0
- package/dist/customer-user/order-module/plate-order/plate-order-model.js +69 -2
- package/dist/customer-user/order-module/tracking/tracking-model.d.ts +9 -0
- package/dist/customer-user/order-module/tracking/tracking-model.js +33 -2
- package/dist/customer-user/replace-items/replace-items-model.d.ts +1 -0
- package/dist/customer-user/replace-items/replace-items-model.js +5 -1
- package/dist/customer-user/resume-journey/resume-journey-model.d.ts +11 -0
- package/dist/customer-user/resume-journey/resume-journey-model.js +41 -2
- package/dist/customer-user/testing-session/testing-session-dao.d.ts +86 -0
- package/dist/customer-user/testing-session/testing-session-dao.js +149 -0
- package/dist/customer-user/testing-session/testing-session-model.d.ts +30 -0
- package/dist/customer-user/testing-session/testing-session-model.js +104 -0
- package/dist/patner-third-party/third-party-api-key/third-party-api-key-dao.d.ts +114 -0
- package/dist/patner-third-party/third-party-api-key/third-party-api-key-dao.js +225 -0
- package/dist/patner-third-party/third-party-api-key/third-party-api-key-model.d.ts +21 -0
- package/dist/patner-third-party/third-party-api-key/third-party-api-key-model.js +70 -0
- package/index.js +13 -1
- package/package.json +1 -1
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Item } from "dynamoose/dist/Item";
|
|
2
|
+
/**
|
|
3
|
+
* FMP context shape is still evolving — tighten once the product contract is fixed.
|
|
4
|
+
* Currently stored as an open object (no saveUnknown at schema root).
|
|
5
|
+
*/
|
|
6
|
+
export type ElphieFmpContext = Record<string, unknown>;
|
|
7
|
+
export interface ElphieSession extends Item {
|
|
8
|
+
elphieSessionId: string;
|
|
9
|
+
user_id: string;
|
|
10
|
+
conversation_id: string;
|
|
11
|
+
title: string;
|
|
12
|
+
fmp_context?: ElphieFmpContext;
|
|
13
|
+
created_at: string;
|
|
14
|
+
updated_at: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Input for creating a session. `elphieSessionId` is set in the service/DAO layer
|
|
18
|
+
* via `crypto.randomUUID()` — never auto-generated in the schema.
|
|
19
|
+
*/
|
|
20
|
+
export type CreateElphieSessionInput = {
|
|
21
|
+
user_id: string;
|
|
22
|
+
conversation_id: string;
|
|
23
|
+
title: string;
|
|
24
|
+
fmp_context?: ElphieFmpContext;
|
|
25
|
+
};
|
|
26
|
+
export declare const ElphieSessionModel: import("dynamoose/dist/General").ModelType<ElphieSession>;
|
|
@@ -0,0 +1,55 @@
|
|
|
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.ElphieSessionModel = void 0;
|
|
7
|
+
const dynamoose_1 = __importDefault(require("dynamoose"));
|
|
8
|
+
const table_names_1 = require("../../config/table-names");
|
|
9
|
+
/**
|
|
10
|
+
* Dynamoose schema for `elphie_sessions`.
|
|
11
|
+
*
|
|
12
|
+
* HASH: `elphieSessionId` (app-generated UUID — no schema default).
|
|
13
|
+
* GSI `user_id-index`: HASH `user_id` only (`created_at` / `updated_at` are plain attributes).
|
|
14
|
+
*
|
|
15
|
+
* `create: false` — tables + GSIs are provisioned via CDK, not auto-created on boot.
|
|
16
|
+
*/
|
|
17
|
+
const elphieSessionSchema = new dynamoose_1.default.Schema({
|
|
18
|
+
elphieSessionId: {
|
|
19
|
+
type: String,
|
|
20
|
+
hashKey: true,
|
|
21
|
+
required: true
|
|
22
|
+
},
|
|
23
|
+
user_id: {
|
|
24
|
+
type: String,
|
|
25
|
+
required: true,
|
|
26
|
+
index: {
|
|
27
|
+
name: "user_id-index",
|
|
28
|
+
type: "global"
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
conversation_id: {
|
|
32
|
+
type: String,
|
|
33
|
+
required: true
|
|
34
|
+
},
|
|
35
|
+
title: {
|
|
36
|
+
type: String,
|
|
37
|
+
required: true
|
|
38
|
+
},
|
|
39
|
+
fmp_context: {
|
|
40
|
+
type: Object
|
|
41
|
+
},
|
|
42
|
+
created_at: {
|
|
43
|
+
type: String,
|
|
44
|
+
},
|
|
45
|
+
updated_at: {
|
|
46
|
+
type: String,
|
|
47
|
+
}
|
|
48
|
+
}, {
|
|
49
|
+
// Allow nested keys under fmp_context until the shape is finalized.
|
|
50
|
+
// Root remains closed — not `saveUnknown: true`.
|
|
51
|
+
saveUnknown: ["fmp_context.**"],
|
|
52
|
+
timestamps: true
|
|
53
|
+
});
|
|
54
|
+
exports.ElphieSessionModel = dynamoose_1.default.model(table_names_1.TABLE_NAMES.ELPHIE_SESSIONS, elphieSessionSchema, { create: false, waitForActive: false });
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxwaGllLXNlc3Npb24tbW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY3VzdG9tZXItdXNlci9lbHBoaWUvZWxwaGllLXNlc3Npb24tbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsMERBQWtDO0FBRWxDLDBEQUF1RDtBQTZCdkQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxtQkFBUyxDQUFDLE1BQU0sQ0FDNUM7SUFDSSxlQUFlLEVBQUU7UUFDYixJQUFJLEVBQUUsTUFBTTtRQUNaLE9BQU8sRUFBRSxJQUFJO1FBQ2IsUUFBUSxFQUFFLElBQUk7S0FDakI7SUFDRCxPQUFPLEVBQUU7UUFDTCxJQUFJLEVBQUUsTUFBTTtRQUNaLFFBQVEsRUFBRSxJQUFJO1FBQ2QsS0FBSyxFQUFFO1lBQ0gsSUFBSSxFQUFFLGVBQWU7WUFDckIsSUFBSSxFQUFFLFFBQVE7U0FDakI7S0FDSjtJQUNELGVBQWUsRUFBRTtRQUNiLElBQUksRUFBRSxNQUFNO1FBQ1osUUFBUSxFQUFFLElBQUk7S0FDakI7SUFDRCxLQUFLLEVBQUU7UUFDSCxJQUFJLEVBQUUsTUFBTTtRQUNaLFFBQVEsRUFBRSxJQUFJO0tBQ2pCO0lBQ0QsV0FBVyxFQUFFO1FBQ1QsSUFBSSxFQUFFLE1BQU07S0FDZjtJQUNELFVBQVUsRUFBRTtRQUNSLElBQUksRUFBRSxNQUFNO0tBQ2Y7SUFDRCxVQUFVLEVBQUU7UUFDUixJQUFJLEVBQUUsTUFBTTtLQUNmO0NBQ0osRUFDRDtJQUNJLG9FQUFvRTtJQUNwRSxpREFBaUQ7SUFDakQsV0FBVyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7SUFDL0IsVUFBVSxFQUFFLElBQUk7Q0FDbkIsQ0FDSixDQUFDO0FBRVcsUUFBQSxrQkFBa0IsR0FBRyxtQkFBUyxDQUFDLEtBQUssQ0FDN0MseUJBQVcsQ0FBQyxlQUFlLEVBQzNCLG1CQUFtQixFQUNuQixFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxDQUMxQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGR5bmFtb29zZSBmcm9tIFwiZHluYW1vb3NlXCI7XG5pbXBvcnQgeyBJdGVtIH0gZnJvbSBcImR5bmFtb29zZS9kaXN0L0l0ZW1cIjtcbmltcG9ydCB7IFRBQkxFX05BTUVTIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy90YWJsZS1uYW1lc1wiO1xuXG4vKipcbiAqIEZNUCBjb250ZXh0IHNoYXBlIGlzIHN0aWxsIGV2b2x2aW5nIOKAlCB0aWdodGVuIG9uY2UgdGhlIHByb2R1Y3QgY29udHJhY3QgaXMgZml4ZWQuXG4gKiBDdXJyZW50bHkgc3RvcmVkIGFzIGFuIG9wZW4gb2JqZWN0IChubyBzYXZlVW5rbm93biBhdCBzY2hlbWEgcm9vdCkuXG4gKi9cbmV4cG9ydCB0eXBlIEVscGhpZUZtcENvbnRleHQgPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuZXhwb3J0IGludGVyZmFjZSBFbHBoaWVTZXNzaW9uIGV4dGVuZHMgSXRlbSB7XG4gICAgZWxwaGllU2Vzc2lvbklkOiBzdHJpbmc7XG4gICAgdXNlcl9pZDogc3RyaW5nO1xuICAgIGNvbnZlcnNhdGlvbl9pZDogc3RyaW5nO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgZm1wX2NvbnRleHQ/OiBFbHBoaWVGbXBDb250ZXh0O1xuICAgIGNyZWF0ZWRfYXQ6IHN0cmluZztcbiAgICB1cGRhdGVkX2F0OiBzdHJpbmc7XG59XG5cbi8qKlxuICogSW5wdXQgZm9yIGNyZWF0aW5nIGEgc2Vzc2lvbi4gYGVscGhpZVNlc3Npb25JZGAgaXMgc2V0IGluIHRoZSBzZXJ2aWNlL0RBTyBsYXllclxuICogdmlhIGBjcnlwdG8ucmFuZG9tVVVJRCgpYCDigJQgbmV2ZXIgYXV0by1nZW5lcmF0ZWQgaW4gdGhlIHNjaGVtYS5cbiAqL1xuZXhwb3J0IHR5cGUgQ3JlYXRlRWxwaGllU2Vzc2lvbklucHV0ID0ge1xuICAgIHVzZXJfaWQ6IHN0cmluZztcbiAgICBjb252ZXJzYXRpb25faWQ6IHN0cmluZztcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIGZtcF9jb250ZXh0PzogRWxwaGllRm1wQ29udGV4dDtcbn07XG5cbi8qKlxuICogRHluYW1vb3NlIHNjaGVtYSBmb3IgYGVscGhpZV9zZXNzaW9uc2AuXG4gKlxuICogSEFTSDogYGVscGhpZVNlc3Npb25JZGAgKGFwcC1nZW5lcmF0ZWQgVVVJRCDigJQgbm8gc2NoZW1hIGRlZmF1bHQpLlxuICogR1NJIGB1c2VyX2lkLWluZGV4YDogSEFTSCBgdXNlcl9pZGAgb25seSAoYGNyZWF0ZWRfYXRgIC8gYHVwZGF0ZWRfYXRgIGFyZSBwbGFpbiBhdHRyaWJ1dGVzKS5cbiAqXG4gKiBgY3JlYXRlOiBmYWxzZWAg4oCUIHRhYmxlcyArIEdTSXMgYXJlIHByb3Zpc2lvbmVkIHZpYSBDREssIG5vdCBhdXRvLWNyZWF0ZWQgb24gYm9vdC5cbiAqL1xuY29uc3QgZWxwaGllU2Vzc2lvblNjaGVtYSA9IG5ldyBkeW5hbW9vc2UuU2NoZW1hKFxuICAgIHtcbiAgICAgICAgZWxwaGllU2Vzc2lvbklkOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICBoYXNoS2V5OiB0cnVlLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgdXNlcl9pZDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBpbmRleDoge1xuICAgICAgICAgICAgICAgIG5hbWU6IFwidXNlcl9pZC1pbmRleFwiLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwiZ2xvYmFsXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY29udmVyc2F0aW9uX2lkOiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB0aXRsZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgZm1wX2NvbnRleHQ6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdFxuICAgICAgICB9LFxuICAgICAgICBjcmVhdGVkX2F0OiB7XG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgIH0sXG4gICAgICAgIHVwZGF0ZWRfYXQ6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvLyBBbGxvdyBuZXN0ZWQga2V5cyB1bmRlciBmbXBfY29udGV4dCB1bnRpbCB0aGUgc2hhcGUgaXMgZmluYWxpemVkLlxuICAgICAgICAvLyBSb290IHJlbWFpbnMgY2xvc2VkIOKAlCBub3QgYHNhdmVVbmtub3duOiB0cnVlYC5cbiAgICAgICAgc2F2ZVVua25vd246IFtcImZtcF9jb250ZXh0LioqXCJdLFxuICAgICAgICB0aW1lc3RhbXBzOiB0cnVlXG4gICAgfVxuKTtcblxuZXhwb3J0IGNvbnN0IEVscGhpZVNlc3Npb25Nb2RlbCA9IGR5bmFtb29zZS5tb2RlbDxFbHBoaWVTZXNzaW9uPihcbiAgICBUQUJMRV9OQU1FUy5FTFBISUVfU0VTU0lPTlMsXG4gICAgZWxwaGllU2Vzc2lvblNjaGVtYSxcbiAgICB7IGNyZWF0ZTogZmFsc2UsIHdhaXRGb3JBY3RpdmU6IGZhbHNlIH1cbik7XG4iXX0=
|
|
@@ -51,7 +51,11 @@ __decorate([
|
|
|
51
51
|
(0, annotations_1.attribute)(),
|
|
52
52
|
__metadata("design:type", String)
|
|
53
53
|
], FmpRequestCallbackModel.prototype, "plateId", void 0);
|
|
54
|
+
__decorate([
|
|
55
|
+
(0, annotations_1.attribute)(),
|
|
56
|
+
__metadata("design:type", String)
|
|
57
|
+
], FmpRequestCallbackModel.prototype, "sourcePlatform", void 0);
|
|
54
58
|
exports.FmpRequestCallbackModel = FmpRequestCallbackModel = __decorate([
|
|
55
59
|
(0, annotations_1.table)("FmpRequestCallbackTable")
|
|
56
60
|
], FmpRequestCallbackModel);
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm1wLXJlcXVlc3QtY2FsbGJhY2stbW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY3VzdG9tZXItdXNlci9mbXBSZXF1ZXN0Q2FsbGJhY2svZm1wLXJlcXVlc3QtY2FsbGJhY2stbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQ0EsdURBQXlGO0FBQ3pGLGlEQUE2QztBQUd0QyxJQUFNLHVCQUF1QixHQUE3QixNQUFNLHVCQUF3QixTQUFRLHNCQUFTO0NBcUJyRCxDQUFBO0FBckJZLDBEQUF1QjtBQUVoQztJQURDLElBQUEsa0NBQW9CLEVBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUM7O21EQUM5QjtBQUVYO0lBREMsSUFBQSx1QkFBUyxFQUFDLEVBQUUsc0JBQXNCLEVBQUUsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDOzs0REFDbEQ7QUFFcEI7SUFEQyxJQUFBLHVCQUFTLEVBQUMsRUFBRSxzQkFBc0IsRUFBRSxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDOzt1REFDbEQ7QUFFZjtJQURDLElBQUEsdUJBQVMsR0FBRTs7MkRBQ2tCO0FBRTlCO0lBREMsSUFBQSx1QkFBUyxHQUFFOzt3REFDSztBQUVqQjtJQURDLElBQUEsdUJBQVMsR0FBRTs7NkRBQ1M7QUFFckI7SUFEQyxJQUFBLHVCQUFTLEdBQUU7OytEQUNXO0FBRXZCO0lBREMsSUFBQSx1QkFBUyxHQUFFOzs0REFDUTtBQUVwQjtJQURDLElBQUEsdUJBQVMsR0FBRTs7d0RBQ0s7QUFFakI7SUFEQyxJQUFBLHVCQUFTLEdBQUU7OytEQUNZO2tDQXBCZix1QkFBdUI7SUFEbkMsSUFBQSxtQkFBSyxFQUFDLHlCQUF5QixDQUFDO0dBQ3BCLHVCQUF1QixDQXFCbkMiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7IGF0dHJpYnV0ZSwgYXV0b0dlbmVyYXRlZEhhc2hLZXksIHJhbmdlS2V5LCB0YWJsZSB9IGZyb20gXCJAbm92YS1vZG0vYW5ub3RhdGlvbnNcIjtcbmltcG9ydCB7IEJhc2VNb2RlbCB9IGZyb20gXCIuLi8uLi9iYXNlLW1vZGVsXCI7XG5cbkB0YWJsZShcIkZtcFJlcXVlc3RDYWxsYmFja1RhYmxlXCIpXG5leHBvcnQgY2xhc3MgRm1wUmVxdWVzdENhbGxiYWNrTW9kZWwgZXh0ZW5kcyBCYXNlTW9kZWwge1xuICAgIEBhdXRvR2VuZXJhdGVkSGFzaEtleSh7IHR5cGU6IFwiU3RyaW5nXCIgfSlcbiAgICBpZDogc3RyaW5nO1xuICAgIEBhdHRyaWJ1dGUoeyBpbmRleEtleUNvbmZpZ3VyYXRpb25zOiB7IFwicGhvbmVOdW1iZXJJbmRleFwiOiBcIkhBU0hcIiB9IH0pXG4gICAgcGhvbmVOdW1iZXI6IHN0cmluZztcbiAgICBAYXR0cmlidXRlKHsgaW5kZXhLZXlDb25maWd1cmF0aW9uczogeyBcInVzZXJJZEluZGV4XCI6IFwiSEFTSFwiIH0gfSlcbiAgICB1c2VySWQ6IHN0cmluZztcbiAgICBAYXR0cmlidXRlKClcbiAgICBzZWxlY3Rpb25zPzogU2VsZWN0aW9uc01ldGFbXTtcbiAgICBAYXR0cmlidXRlKClcbiAgICBtZXNzYWdlPzogc3RyaW5nO1xuICAgIEBhdHRyaWJ1dGUoKVxuICAgIHJld2FyZFN0YXR1czogc3RyaW5nO1xuICAgIEBhdHRyaWJ1dGUoKVxuICAgIGNvcnJlc3BvbmRlbmNlOiBzdHJpbmc7XG4gICAgQGF0dHJpYnV0ZSgpXG4gICAgdHJpZ2dlclR5cGU6IHN0cmluZztcbiAgICBAYXR0cmlidXRlKClcbiAgICBwbGF0ZUlkPzogc3RyaW5nO1xuICAgIEBhdHRyaWJ1dGUoKVxuICAgIHNvdXJjZVBsYXRmb3JtPzogc3RyaW5nOyAvLyBNV0VCLCBBUFAsIFdFQlNJVEUsIFdIQVRTQVBQXG59XG5cbnR5cGUgU2VsZWN0aW9uc01ldGEgPSB7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICBvcHRpb25zOiBzdHJpbmdbXTtcbn0iXX0=
|
|
@@ -112,7 +112,15 @@ __decorate([
|
|
|
112
112
|
(0, annotations_1.attribute)(),
|
|
113
113
|
__metadata("design:type", Number)
|
|
114
114
|
], ItemsModel.prototype, "liveCounterItemOrder", void 0);
|
|
115
|
+
__decorate([
|
|
116
|
+
(0, annotations_1.attribute)(),
|
|
117
|
+
__metadata("design:type", Number)
|
|
118
|
+
], ItemsModel.prototype, "itemConversionFactor", void 0);
|
|
119
|
+
__decorate([
|
|
120
|
+
(0, annotations_1.attribute)(),
|
|
121
|
+
__metadata("design:type", String)
|
|
122
|
+
], ItemsModel.prototype, "thumbnailImageUrl", void 0);
|
|
115
123
|
exports.ItemsModel = ItemsModel = __decorate([
|
|
116
124
|
(0, annotations_1.table)("MenuItemsTable")
|
|
117
125
|
], ItemsModel);
|
|
118
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
126
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbXMtbW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY3VzdG9tZXItdXNlci9pdGVtcy9pdGVtcy1tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSx1REFBK0U7QUFDL0UsaURBQTZDO0FBSXRDLElBQU0sVUFBVSxHQUFoQixNQUFNLFVBQVcsU0FBUSxzQkFBUztJQXNEckMsb0JBQW9CO1FBQ2hCLE9BQU8sRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDO0lBQ3ZCLENBQUM7Q0FhSixDQUFBO0FBckVZLGdDQUFVO0FBRW5CO0lBREMsSUFBQSxrQ0FBb0IsRUFBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQzs7MENBQzFCO0FBRWY7SUFEQyxJQUFBLHVCQUFTLEdBQUU7O2dEQUNTO0FBSXJCO0lBSEMsSUFBQSx1QkFBUyxFQUFDO1FBQ1Asc0JBQXNCLEVBQUUsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUTtLQUMxRSxDQUFDOztrREFDcUI7QUFFdkI7SUFEQyxJQUFBLHVCQUFTLEdBQUU7OzRDQUNLO0FBRWpCO0lBREMsSUFBQSx1QkFBUyxHQUFFOzttREFDWTtBQUV4QjtJQURDLElBQUEsdUJBQVMsR0FBRTs7aURBQ1U7QUFJdEI7SUFIQyxJQUFBLHVCQUFTLEVBQUM7UUFDUCxzQkFBc0IsRUFBRSxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUTtLQUN0RSxDQUFDOzs0Q0FDZTtBQUVqQjtJQURDLElBQUEsdUJBQVMsR0FBRTs7aURBQ1U7QUFFdEI7SUFEQyxJQUFBLHVCQUFTLEdBQUU7O29EQUNhO0FBRXpCO0lBREMsSUFBQSx1QkFBUyxHQUFFOzsrQ0FDUTtBQUVwQjtJQURDLElBQUEsdUJBQVMsR0FBRTs7b0RBQ2E7QUFFekI7SUFEQyxJQUFBLHVCQUFTLEdBQUU7O3VEQUNnQjtBQUU1QjtJQURDLElBQUEsdUJBQVMsR0FBRTs7b0RBQ2E7QUFFekI7SUFEQyxJQUFBLHVCQUFTLEdBQUU7O29EQUNlO0FBSzNCO0lBSEMsSUFBQSx1QkFBUyxFQUFDO1FBQ1Asc0JBQXNCLEVBQUUsRUFBRSx5QkFBeUIsRUFBRSxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUTtLQUNqRixDQUFDOzs4Q0FDaUI7QUFHbkI7SUFEQyxJQUFBLHVCQUFTLEdBQUU7OzRDQUNPO0FBR25CO0lBREMsSUFBQSx1QkFBUyxHQUFFOzs4Q0FDUztBQUdyQjtJQURDLElBQUEsdUJBQVMsR0FBRTs7MkRBQ3FCO0FBR2pDO0lBREMsSUFBQSx1QkFBUyxHQUFFOztpREFDVztBQUd2QjtJQURDLElBQUEsdUJBQVMsR0FBRTs7a0RBQ2E7QUFPekI7SUFEQyxJQUFBLHVCQUFTLEVBQUMsRUFBQyxzQkFBc0IsRUFBRSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUMsQ0FBQzs7aURBQ2hFO0FBR3RCO0lBREMsSUFBQSx1QkFBUyxHQUFFOzt3REFDaUI7QUFHN0I7SUFEQyxJQUFBLHVCQUFTLEdBQUU7O3dEQUNpQjtBQUc3QjtJQURDLElBQUEsdUJBQVMsR0FBRTs7cURBQ2M7cUJBcEVqQixVQUFVO0lBRHRCLElBQUEsbUJBQUssRUFBQyxnQkFBZ0IsQ0FBQztHQUNYLFVBQVUsQ0FxRXRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXR0cmlidXRlLCBhdXRvR2VuZXJhdGVkSGFzaEtleSwgdGFibGUgfSBmcm9tIFwiQG5vdmEtb2RtL2Fubm90YXRpb25zXCI7XG5pbXBvcnQgeyBCYXNlTW9kZWwgfSBmcm9tIFwiLi4vLi4vYmFzZS1tb2RlbFwiO1xuXG5cbkB0YWJsZShcIk1lbnVJdGVtc1RhYmxlXCIpXG5leHBvcnQgY2xhc3MgSXRlbXNNb2RlbCBleHRlbmRzIEJhc2VNb2RlbCB7XG4gICAgQGF1dG9HZW5lcmF0ZWRIYXNoS2V5KHsgdHlwZTogJ1N0cmluZycgfSlcbiAgICBpdGVtSWQ6IHN0cmluZztcbiAgICBAYXR0cmlidXRlKClcbiAgICBpdGVtQ2F0ZWdvcnk6IHN0cmluZztcbiAgICBAYXR0cmlidXRlKHtcbiAgICAgICAgaW5kZXhLZXlDb25maWd1cmF0aW9uczogeyBcIml0ZW1DYXRlZ29yeUluZGV4XCI6IFwiSEFTSFwiIH0sIHR5cGU6ICdTdHJpbmcnXG4gICAgfSlcbiAgICBpdGVtQ2F0ZWdvcnlJZDogc3RyaW5nO1xuICAgIEBhdHRyaWJ1dGUoKVxuICAgIGl0ZW1OYW1lOiBzdHJpbmc7XG4gICAgQGF0dHJpYnV0ZSgpXG4gICAgaXRlbURlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgQGF0dHJpYnV0ZSgpXG4gICAgaXRlbUltYWdlc1VybDogc3RyaW5nO1xuICAgIEBhdHRyaWJ1dGUoe1xuICAgICAgICBpbmRleEtleUNvbmZpZ3VyYXRpb25zOiB7IFwiaXRlbVR5cGVJbmRleFwiOiBcIkhBU0hcIiB9LCB0eXBlOiAnU3RyaW5nJ1xuICAgIH0pXG4gICAgaXRlbVR5cGU6IHN0cmluZztcbiAgICBAYXR0cmlidXRlKClcbiAgICBpdGVtQmFzZVByaWNlOiBudW1iZXI7XG4gICAgQGF0dHJpYnV0ZSgpXG4gICAgaXRlbU1pbmltdW1QcmljZTogbnVtYmVyO1xuICAgIEBhdHRyaWJ1dGUoKVxuICAgIGl0ZW1QcmVtaXVtOiBzdHJpbmc7XG4gICAgQGF0dHJpYnV0ZSgpXG4gICAgaXRlbUJhc2VRdWFudGl0eTogbnVtYmVyO1xuICAgIEBhdHRyaWJ1dGUoKVxuICAgIGl0ZW1NaW5pbXVtUXVhbnRpdHk6IG51bWJlcjtcbiAgICBAYXR0cmlidXRlKClcbiAgICBpdGVtUXVhbnRpdHlVbml0OiBzdHJpbmc7XG4gICAgQGF0dHJpYnV0ZSgpXG4gICAgaXRlbUxvY2F0aW9uQ2l0eTogc3RyaW5nW107XG5cbiAgICBAYXR0cmlidXRlKHtcbiAgICAgICAgaW5kZXhLZXlDb25maWd1cmF0aW9uczogeyBcIml0ZW1DYXRlZ29yeUFjdGl2ZUluZGV4XCI6IFwiUkFOR0VcIiB9LCB0eXBlOiAnU3RyaW5nJ1xuICAgIH0pXG4gICAgaXRlbUFjdGl2ZTogc3RyaW5nO1xuXG4gICAgQGF0dHJpYnV0ZSgpXG4gICAgbWVhbFR5cGU6IHN0cmluZ1tdO1xuXG4gICAgQGF0dHJpYnV0ZSgpXG4gICAgY3Vpc2luZUlkczogc3RyaW5nW107XG5cbiAgICBAYXR0cmlidXRlKClcbiAgICBmcmVlQWNjb21wYW5pbWVudHNMaW1pdD86IG51bWJlcjsgLy8gRm9yIGFjY29tcGxpbWVudHNUYWJsZSBWYWx1ZSBDaGVja1xuXG4gICAgQGF0dHJpYnV0ZSgpXG4gICAgY2F0ZWdvcnlGb3JNTD86IHN0cmluZztcblxuICAgIEBhdHRyaWJ1dGUoKVxuICAgIGlzQm9uZWxlc3NJdGVtPzogYm9vbGVhbjsgLy8gTmV3IEFkZGVkIDA4LTExLTIwMjUgVG8gY2hlY2sgaWYgdGhlIGl0ZW0gaXMgYSBib25lIGl0ZW1cblxuICAgIHRvT3BlblNlYXJjaERvY3VtZW50KCk6IGFueSB7XG4gICAgICAgIHJldHVybiB7IC4uLnRoaXMgfTtcbiAgICB9XG5cbiAgICBAYXR0cmlidXRlKHtpbmRleEtleUNvbmZpZ3VyYXRpb25zOiB7IFwibGl2ZUNvdW50ZXJJZEluZGV4XCI6IFwiSEFTSFwiIH0sIHR5cGU6ICdTdHJpbmcnfSlcbiAgICBsaXZlQ291bnRlcklkOiBzdHJpbmc7XG5cbiAgICBAYXR0cmlidXRlKClcbiAgICBsaXZlQ291bnRlckl0ZW1PcmRlcjogbnVtYmVyO1xuXG4gICAgQGF0dHJpYnV0ZSgpXG4gICAgaXRlbUNvbnZlcnNpb25GYWN0b3I6IG51bWJlcjtcblxuICAgIEBhdHRyaWJ1dGUoKVxuICAgIHRodW1ibmFpbEltYWdlVXJsOiBzdHJpbmc7XG59XG4iXX0=
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { GenericDynamooseDAO } from "../../base-dynamoose-dao";
|
|
2
|
+
import { AuthContext } from "../../base-dynamoose-model";
|
|
3
|
+
import { CreateItemsBundleInput, ItemBundleUsageType, ItemsBundle } from "./items-bundle-model";
|
|
4
|
+
type ListResult = {
|
|
5
|
+
items: ItemsBundle[];
|
|
6
|
+
nextToken?: string;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* DAO for item bundles (add-on / replacement groupings).
|
|
10
|
+
*
|
|
11
|
+
* Table keys: `bundleId` (PK).
|
|
12
|
+
* Lookups:
|
|
13
|
+
* - `usageTypeIndex` → bundles by ADDON / REPLACEMENT
|
|
14
|
+
* - `bundleTypeIndex` → bundles by `bundleType`
|
|
15
|
+
*/
|
|
16
|
+
declare class ItemsBundleDao extends GenericDynamooseDAO<ItemsBundle> {
|
|
17
|
+
constructor();
|
|
18
|
+
/**
|
|
19
|
+
* Creates one item-bundle record.
|
|
20
|
+
*
|
|
21
|
+
* Use when: admin defines a new ADDON or REPLACEMENT bundle.
|
|
22
|
+
* - `bundleId` auto-generates if omitted.
|
|
23
|
+
* - `usageType` must be `"ADDON"` or `"REPLACEMENT"`.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* await itemsBundleDao.save({
|
|
27
|
+
* bundleType: "STARTERS",
|
|
28
|
+
* bundleName: "Premium Starters Pack",
|
|
29
|
+
* usageType: "ADDON"
|
|
30
|
+
* });
|
|
31
|
+
*/
|
|
32
|
+
save: (item: CreateItemsBundleInput, authContext?: AuthContext) => Promise<ItemsBundle>;
|
|
33
|
+
/**
|
|
34
|
+
* Updates one item-bundle by `bundleId`.
|
|
35
|
+
*
|
|
36
|
+
* Use when: renaming a bundle or changing ADDON ↔ REPLACEMENT usage.
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* await itemsBundleDao.update("bundle-uuid", { usageType: "REPLACEMENT" });
|
|
40
|
+
*/
|
|
41
|
+
update: (bundleId: string, updates: Partial<ItemsBundle>, authContext?: AuthContext) => Promise<ItemsBundle>;
|
|
42
|
+
/**
|
|
43
|
+
* Fetches one item-bundle by primary key.
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* const bundle = await itemsBundleDao.getById("bundle-uuid");
|
|
47
|
+
*/
|
|
48
|
+
getById: (bundleId: string) => Promise<ItemsBundle | null>;
|
|
49
|
+
/**
|
|
50
|
+
* Lists bundles by usage type — ADDON or REPLACEMENT (GSI `usageTypeIndex`).
|
|
51
|
+
*
|
|
52
|
+
* Use when: showing only add-on packs or only replacement packs in UI.
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* const addons = await itemsBundleDao.listByUsageType("ADDON", 20);
|
|
56
|
+
* const replacements = await itemsBundleDao.listByUsageType("REPLACEMENT", 20);
|
|
57
|
+
*/
|
|
58
|
+
listByUsageType: (usageType: ItemBundleUsageType, limit?: number, token?: string) => Promise<ListResult>;
|
|
59
|
+
/**
|
|
60
|
+
* Lists bundles by `bundleType` (GSI `bundleTypeIndex`).
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* const starters = await itemsBundleDao.listByBundleType("STARTERS", 20);
|
|
64
|
+
*/
|
|
65
|
+
listByBundleType: (bundleType: string, limit?: number, token?: string) => Promise<ListResult>;
|
|
66
|
+
/**
|
|
67
|
+
* Deletes one item-bundle by primary key.
|
|
68
|
+
*/
|
|
69
|
+
deleteById: (bundleId: string) => Promise<void>;
|
|
70
|
+
}
|
|
71
|
+
export declare const itemsBundleDao: ItemsBundleDao;
|
|
72
|
+
export {};
|
|
@@ -0,0 +1,117 @@
|
|
|
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.itemsBundleDao = void 0;
|
|
7
|
+
const dynamoose_1 = __importDefault(require("dynamoose"));
|
|
8
|
+
const base_dynamoose_dao_1 = require("../../base-dynamoose-dao");
|
|
9
|
+
const items_bundle_model_1 = require("./items-bundle-model");
|
|
10
|
+
/**
|
|
11
|
+
* DAO for item bundles (add-on / replacement groupings).
|
|
12
|
+
*
|
|
13
|
+
* Table keys: `bundleId` (PK).
|
|
14
|
+
* Lookups:
|
|
15
|
+
* - `usageTypeIndex` → bundles by ADDON / REPLACEMENT
|
|
16
|
+
* - `bundleTypeIndex` → bundles by `bundleType`
|
|
17
|
+
*/
|
|
18
|
+
class ItemsBundleDao extends base_dynamoose_dao_1.GenericDynamooseDAO {
|
|
19
|
+
constructor() {
|
|
20
|
+
super(items_bundle_model_1.ItemsBundleModel, "bundleId");
|
|
21
|
+
/**
|
|
22
|
+
* Creates one item-bundle record.
|
|
23
|
+
*
|
|
24
|
+
* Use when: admin defines a new ADDON or REPLACEMENT bundle.
|
|
25
|
+
* - `bundleId` auto-generates if omitted.
|
|
26
|
+
* - `usageType` must be `"ADDON"` or `"REPLACEMENT"`.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* await itemsBundleDao.save({
|
|
30
|
+
* bundleType: "STARTERS",
|
|
31
|
+
* bundleName: "Premium Starters Pack",
|
|
32
|
+
* usageType: "ADDON"
|
|
33
|
+
* });
|
|
34
|
+
*/
|
|
35
|
+
this.save = async (item, authContext) => {
|
|
36
|
+
return super.save(item, authContext);
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Updates one item-bundle by `bundleId`.
|
|
40
|
+
*
|
|
41
|
+
* Use when: renaming a bundle or changing ADDON ↔ REPLACEMENT usage.
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* await itemsBundleDao.update("bundle-uuid", { usageType: "REPLACEMENT" });
|
|
45
|
+
*/
|
|
46
|
+
this.update = async (bundleId, updates, authContext) => {
|
|
47
|
+
const updated = await items_bundle_model_1.ItemsBundleModel.update({ bundleId }, {
|
|
48
|
+
...updates,
|
|
49
|
+
updated_time: new Date(),
|
|
50
|
+
updated_user: authContext?.userSub
|
|
51
|
+
}, {
|
|
52
|
+
condition: new dynamoose_1.default.Condition().attribute("bundleId").exists()
|
|
53
|
+
});
|
|
54
|
+
return updated;
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Fetches one item-bundle by primary key.
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* const bundle = await itemsBundleDao.getById("bundle-uuid");
|
|
61
|
+
*/
|
|
62
|
+
this.getById = async (bundleId) => this.get(bundleId);
|
|
63
|
+
/**
|
|
64
|
+
* Lists bundles by usage type — ADDON or REPLACEMENT (GSI `usageTypeIndex`).
|
|
65
|
+
*
|
|
66
|
+
* Use when: showing only add-on packs or only replacement packs in UI.
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* const addons = await itemsBundleDao.listByUsageType("ADDON", 20);
|
|
70
|
+
* const replacements = await itemsBundleDao.listByUsageType("REPLACEMENT", 20);
|
|
71
|
+
*/
|
|
72
|
+
this.listByUsageType = async (usageType, limit, token) => {
|
|
73
|
+
const decodedToken = this.decode(token);
|
|
74
|
+
let queryBuilder = items_bundle_model_1.ItemsBundleModel.query("usageType").eq(usageType).using("usageTypeIndex");
|
|
75
|
+
if (decodedToken) {
|
|
76
|
+
queryBuilder = queryBuilder.startAt(decodedToken);
|
|
77
|
+
}
|
|
78
|
+
if (typeof limit === "number") {
|
|
79
|
+
queryBuilder = queryBuilder.limit(limit);
|
|
80
|
+
}
|
|
81
|
+
const queryResult = await queryBuilder.exec();
|
|
82
|
+
return {
|
|
83
|
+
items: queryResult,
|
|
84
|
+
nextToken: await this.encode(queryResult.lastKey)
|
|
85
|
+
};
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* Lists bundles by `bundleType` (GSI `bundleTypeIndex`).
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* const starters = await itemsBundleDao.listByBundleType("STARTERS", 20);
|
|
92
|
+
*/
|
|
93
|
+
this.listByBundleType = async (bundleType, limit, token) => {
|
|
94
|
+
const decodedToken = this.decode(token);
|
|
95
|
+
let queryBuilder = items_bundle_model_1.ItemsBundleModel.query("bundleType").eq(bundleType).using("bundleTypeIndex");
|
|
96
|
+
if (decodedToken) {
|
|
97
|
+
queryBuilder = queryBuilder.startAt(decodedToken);
|
|
98
|
+
}
|
|
99
|
+
if (typeof limit === "number") {
|
|
100
|
+
queryBuilder = queryBuilder.limit(limit);
|
|
101
|
+
}
|
|
102
|
+
const queryResult = await queryBuilder.exec();
|
|
103
|
+
return {
|
|
104
|
+
items: queryResult,
|
|
105
|
+
nextToken: await this.encode(queryResult.lastKey)
|
|
106
|
+
};
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* Deletes one item-bundle by primary key.
|
|
110
|
+
*/
|
|
111
|
+
this.deleteById = async (bundleId) => {
|
|
112
|
+
await this.delete(bundleId);
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
exports.itemsBundleDao = new ItemsBundleDao();
|
|
117
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbXMtYnVuZGxlLWRhby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jdXN0b21lci11c2VyL2l0ZW1zLWJ1bmRsZS9pdGVtcy1idW5kbGUtZGFvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDBEQUFrQztBQUNsQyxpRUFBMEU7QUFFMUUsNkRBSzhCO0FBTzlCOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLGNBQWUsU0FBUSx3Q0FBZ0M7SUFDekQ7UUFDSSxLQUFLLENBQUMscUNBQWdCLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFHeEM7Ozs7Ozs7Ozs7Ozs7V0FhRztRQUNILFNBQUksR0FBRyxLQUFLLEVBQUUsSUFBNEIsRUFBRSxXQUF5QixFQUF3QixFQUFFO1lBQzNGLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFtQixFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3hELENBQUMsQ0FBQztRQUVGOzs7Ozs7O1dBT0c7UUFDSCxXQUFNLEdBQUcsS0FBSyxFQUNWLFFBQWdCLEVBQ2hCLE9BQTZCLEVBQzdCLFdBQXlCLEVBQ0wsRUFBRTtZQUN0QixNQUFNLE9BQU8sR0FBRyxNQUFNLHFDQUFnQixDQUFDLE1BQU0sQ0FDekMsRUFBRSxRQUFRLEVBQUUsRUFDWjtnQkFDSSxHQUFHLE9BQU87Z0JBQ1YsWUFBWSxFQUFFLElBQUksSUFBSSxFQUFFO2dCQUN4QixZQUFZLEVBQUUsV0FBVyxFQUFFLE9BQU87YUFDckMsRUFDRDtnQkFDSSxTQUFTLEVBQUUsSUFBSSxtQkFBUyxDQUFDLFNBQVMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLEVBQUU7YUFDdEUsQ0FDSixDQUFDO1lBQ0YsT0FBTyxPQUFpQyxDQUFDO1FBQzdDLENBQUMsQ0FBQztRQUVGOzs7OztXQUtHO1FBQ0gsWUFBTyxHQUFHLEtBQUssRUFBRSxRQUFnQixFQUErQixFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV0Rjs7Ozs7Ozs7V0FRRztRQUNILG9CQUFlLEdBQUcsS0FBSyxFQUNuQixTQUE4QixFQUM5QixLQUFjLEVBQ2QsS0FBYyxFQUNLLEVBQUU7WUFDckIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QyxJQUFJLFlBQVksR0FBRyxxQ0FBZ0IsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQzdGLElBQUksWUFBWSxFQUFFLENBQUM7Z0JBQ2YsWUFBWSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDdEQsQ0FBQztZQUNELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQzVCLFlBQVksR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzdDLENBQUM7WUFDRCxNQUFNLFdBQVcsR0FBRyxNQUFNLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM5QyxPQUFPO2dCQUNILEtBQUssRUFBRSxXQUF1QztnQkFDOUMsU0FBUyxFQUFFLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsT0FBZ0MsQ0FBQzthQUM3RSxDQUFDO1FBQ04sQ0FBQyxDQUFDO1FBRUY7Ozs7O1dBS0c7UUFDSCxxQkFBZ0IsR0FBRyxLQUFLLEVBQ3BCLFVBQWtCLEVBQ2xCLEtBQWMsRUFDZCxLQUFjLEVBQ0ssRUFBRTtZQUNyQixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hDLElBQUksWUFBWSxHQUFHLHFDQUFnQixDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDaEcsSUFBSSxZQUFZLEVBQUUsQ0FBQztnQkFDZixZQUFZLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN0RCxDQUFDO1lBQ0QsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDNUIsWUFBWSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0MsQ0FBQztZQUNELE1BQU0sV0FBVyxHQUFHLE1BQU0sWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzlDLE9BQU87Z0JBQ0gsS0FBSyxFQUFFLFdBQXVDO2dCQUM5QyxTQUFTLEVBQUUsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFnQyxDQUFDO2FBQzdFLENBQUM7UUFDTixDQUFDLENBQUM7UUFFRjs7V0FFRztRQUNILGVBQVUsR0FBRyxLQUFLLEVBQUUsUUFBZ0IsRUFBaUIsRUFBRTtZQUNuRCxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDO0lBbkhGLENBQUM7Q0FvSEo7QUFFWSxRQUFBLGNBQWMsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGR5bmFtb29zZSBmcm9tIFwiZHluYW1vb3NlXCI7XG5pbXBvcnQgeyBEeW5hbW9LZXksIEdlbmVyaWNEeW5hbW9vc2VEQU8gfSBmcm9tIFwiLi4vLi4vYmFzZS1keW5hbW9vc2UtZGFvXCI7XG5pbXBvcnQgeyBBdXRoQ29udGV4dCB9IGZyb20gXCIuLi8uLi9iYXNlLWR5bmFtb29zZS1tb2RlbFwiO1xuaW1wb3J0IHtcbiAgICBDcmVhdGVJdGVtc0J1bmRsZUlucHV0LFxuICAgIEl0ZW1CdW5kbGVVc2FnZVR5cGUsXG4gICAgSXRlbXNCdW5kbGUsXG4gICAgSXRlbXNCdW5kbGVNb2RlbFxufSBmcm9tIFwiLi9pdGVtcy1idW5kbGUtbW9kZWxcIjtcblxudHlwZSBMaXN0UmVzdWx0ID0ge1xuICAgIGl0ZW1zOiBJdGVtc0J1bmRsZVtdO1xuICAgIG5leHRUb2tlbj86IHN0cmluZztcbn07XG5cbi8qKlxuICogREFPIGZvciBpdGVtIGJ1bmRsZXMgKGFkZC1vbiAvIHJlcGxhY2VtZW50IGdyb3VwaW5ncykuXG4gKlxuICogVGFibGUga2V5czogYGJ1bmRsZUlkYCAoUEspLlxuICogTG9va3VwczpcbiAqIC0gYHVzYWdlVHlwZUluZGV4YCDihpIgYnVuZGxlcyBieSBBRERPTiAvIFJFUExBQ0VNRU5UXG4gKiAtIGBidW5kbGVUeXBlSW5kZXhgIOKGkiBidW5kbGVzIGJ5IGBidW5kbGVUeXBlYFxuICovXG5jbGFzcyBJdGVtc0J1bmRsZURhbyBleHRlbmRzIEdlbmVyaWNEeW5hbW9vc2VEQU88SXRlbXNCdW5kbGU+IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoSXRlbXNCdW5kbGVNb2RlbCwgXCJidW5kbGVJZFwiKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIG9uZSBpdGVtLWJ1bmRsZSByZWNvcmQuXG4gICAgICpcbiAgICAgKiBVc2Ugd2hlbjogYWRtaW4gZGVmaW5lcyBhIG5ldyBBRERPTiBvciBSRVBMQUNFTUVOVCBidW5kbGUuXG4gICAgICogLSBgYnVuZGxlSWRgIGF1dG8tZ2VuZXJhdGVzIGlmIG9taXR0ZWQuXG4gICAgICogLSBgdXNhZ2VUeXBlYCBtdXN0IGJlIGBcIkFERE9OXCJgIG9yIGBcIlJFUExBQ0VNRU5UXCJgLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBhd2FpdCBpdGVtc0J1bmRsZURhby5zYXZlKHtcbiAgICAgKiAgICAgYnVuZGxlVHlwZTogXCJTVEFSVEVSU1wiLFxuICAgICAqICAgICBidW5kbGVOYW1lOiBcIlByZW1pdW0gU3RhcnRlcnMgUGFja1wiLFxuICAgICAqICAgICB1c2FnZVR5cGU6IFwiQURET05cIlxuICAgICAqIH0pO1xuICAgICAqL1xuICAgIHNhdmUgPSBhc3luYyAoaXRlbTogQ3JlYXRlSXRlbXNCdW5kbGVJbnB1dCwgYXV0aENvbnRleHQ/OiBBdXRoQ29udGV4dCk6IFByb21pc2U8SXRlbXNCdW5kbGU+ID0+IHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLnNhdmUoaXRlbSBhcyBJdGVtc0J1bmRsZSwgYXV0aENvbnRleHQpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIG9uZSBpdGVtLWJ1bmRsZSBieSBgYnVuZGxlSWRgLlxuICAgICAqXG4gICAgICogVXNlIHdoZW46IHJlbmFtaW5nIGEgYnVuZGxlIG9yIGNoYW5naW5nIEFERE9OIOKGlCBSRVBMQUNFTUVOVCB1c2FnZS5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYXdhaXQgaXRlbXNCdW5kbGVEYW8udXBkYXRlKFwiYnVuZGxlLXV1aWRcIiwgeyB1c2FnZVR5cGU6IFwiUkVQTEFDRU1FTlRcIiB9KTtcbiAgICAgKi9cbiAgICB1cGRhdGUgPSBhc3luYyAoXG4gICAgICAgIGJ1bmRsZUlkOiBzdHJpbmcsXG4gICAgICAgIHVwZGF0ZXM6IFBhcnRpYWw8SXRlbXNCdW5kbGU+LFxuICAgICAgICBhdXRoQ29udGV4dD86IEF1dGhDb250ZXh0XG4gICAgKTogUHJvbWlzZTxJdGVtc0J1bmRsZT4gPT4ge1xuICAgICAgICBjb25zdCB1cGRhdGVkID0gYXdhaXQgSXRlbXNCdW5kbGVNb2RlbC51cGRhdGUoXG4gICAgICAgICAgICB7IGJ1bmRsZUlkIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLi4udXBkYXRlcyxcbiAgICAgICAgICAgICAgICB1cGRhdGVkX3RpbWU6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICAgICAgdXBkYXRlZF91c2VyOiBhdXRoQ29udGV4dD8udXNlclN1YlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb25kaXRpb246IG5ldyBkeW5hbW9vc2UuQ29uZGl0aW9uKCkuYXR0cmlidXRlKFwiYnVuZGxlSWRcIikuZXhpc3RzKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHVwZGF0ZWQgYXMgdW5rbm93biBhcyBJdGVtc0J1bmRsZTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogRmV0Y2hlcyBvbmUgaXRlbS1idW5kbGUgYnkgcHJpbWFyeSBrZXkuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGNvbnN0IGJ1bmRsZSA9IGF3YWl0IGl0ZW1zQnVuZGxlRGFvLmdldEJ5SWQoXCJidW5kbGUtdXVpZFwiKTtcbiAgICAgKi9cbiAgICBnZXRCeUlkID0gYXN5bmMgKGJ1bmRsZUlkOiBzdHJpbmcpOiBQcm9taXNlPEl0ZW1zQnVuZGxlIHwgbnVsbD4gPT4gdGhpcy5nZXQoYnVuZGxlSWQpO1xuXG4gICAgLyoqXG4gICAgICogTGlzdHMgYnVuZGxlcyBieSB1c2FnZSB0eXBlIOKAlCBBRERPTiBvciBSRVBMQUNFTUVOVCAoR1NJIGB1c2FnZVR5cGVJbmRleGApLlxuICAgICAqXG4gICAgICogVXNlIHdoZW46IHNob3dpbmcgb25seSBhZGQtb24gcGFja3Mgb3Igb25seSByZXBsYWNlbWVudCBwYWNrcyBpbiBVSS5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogY29uc3QgYWRkb25zID0gYXdhaXQgaXRlbXNCdW5kbGVEYW8ubGlzdEJ5VXNhZ2VUeXBlKFwiQURET05cIiwgMjApO1xuICAgICAqIGNvbnN0IHJlcGxhY2VtZW50cyA9IGF3YWl0IGl0ZW1zQnVuZGxlRGFvLmxpc3RCeVVzYWdlVHlwZShcIlJFUExBQ0VNRU5UXCIsIDIwKTtcbiAgICAgKi9cbiAgICBsaXN0QnlVc2FnZVR5cGUgPSBhc3luYyAoXG4gICAgICAgIHVzYWdlVHlwZTogSXRlbUJ1bmRsZVVzYWdlVHlwZSxcbiAgICAgICAgbGltaXQ/OiBudW1iZXIsXG4gICAgICAgIHRva2VuPzogc3RyaW5nXG4gICAgKTogUHJvbWlzZTxMaXN0UmVzdWx0PiA9PiB7XG4gICAgICAgIGNvbnN0IGRlY29kZWRUb2tlbiA9IHRoaXMuZGVjb2RlKHRva2VuKTtcbiAgICAgICAgbGV0IHF1ZXJ5QnVpbGRlciA9IEl0ZW1zQnVuZGxlTW9kZWwucXVlcnkoXCJ1c2FnZVR5cGVcIikuZXEodXNhZ2VUeXBlKS51c2luZyhcInVzYWdlVHlwZUluZGV4XCIpO1xuICAgICAgICBpZiAoZGVjb2RlZFRva2VuKSB7XG4gICAgICAgICAgICBxdWVyeUJ1aWxkZXIgPSBxdWVyeUJ1aWxkZXIuc3RhcnRBdChkZWNvZGVkVG9rZW4pO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgbGltaXQgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIHF1ZXJ5QnVpbGRlciA9IHF1ZXJ5QnVpbGRlci5saW1pdChsaW1pdCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcXVlcnlSZXN1bHQgPSBhd2FpdCBxdWVyeUJ1aWxkZXIuZXhlYygpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXRlbXM6IHF1ZXJ5UmVzdWx0IGFzIHVua25vd24gYXMgSXRlbXNCdW5kbGVbXSxcbiAgICAgICAgICAgIG5leHRUb2tlbjogYXdhaXQgdGhpcy5lbmNvZGUocXVlcnlSZXN1bHQubGFzdEtleSBhcyBEeW5hbW9LZXkgfCB1bmRlZmluZWQpXG4gICAgICAgIH07XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIExpc3RzIGJ1bmRsZXMgYnkgYGJ1bmRsZVR5cGVgIChHU0kgYGJ1bmRsZVR5cGVJbmRleGApLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBjb25zdCBzdGFydGVycyA9IGF3YWl0IGl0ZW1zQnVuZGxlRGFvLmxpc3RCeUJ1bmRsZVR5cGUoXCJTVEFSVEVSU1wiLCAyMCk7XG4gICAgICovXG4gICAgbGlzdEJ5QnVuZGxlVHlwZSA9IGFzeW5jIChcbiAgICAgICAgYnVuZGxlVHlwZTogc3RyaW5nLFxuICAgICAgICBsaW1pdD86IG51bWJlcixcbiAgICAgICAgdG9rZW4/OiBzdHJpbmdcbiAgICApOiBQcm9taXNlPExpc3RSZXN1bHQ+ID0+IHtcbiAgICAgICAgY29uc3QgZGVjb2RlZFRva2VuID0gdGhpcy5kZWNvZGUodG9rZW4pO1xuICAgICAgICBsZXQgcXVlcnlCdWlsZGVyID0gSXRlbXNCdW5kbGVNb2RlbC5xdWVyeShcImJ1bmRsZVR5cGVcIikuZXEoYnVuZGxlVHlwZSkudXNpbmcoXCJidW5kbGVUeXBlSW5kZXhcIik7XG4gICAgICAgIGlmIChkZWNvZGVkVG9rZW4pIHtcbiAgICAgICAgICAgIHF1ZXJ5QnVpbGRlciA9IHF1ZXJ5QnVpbGRlci5zdGFydEF0KGRlY29kZWRUb2tlbik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBsaW1pdCA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgcXVlcnlCdWlsZGVyID0gcXVlcnlCdWlsZGVyLmxpbWl0KGxpbWl0KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBxdWVyeVJlc3VsdCA9IGF3YWl0IHF1ZXJ5QnVpbGRlci5leGVjKCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpdGVtczogcXVlcnlSZXN1bHQgYXMgdW5rbm93biBhcyBJdGVtc0J1bmRsZVtdLFxuICAgICAgICAgICAgbmV4dFRva2VuOiBhd2FpdCB0aGlzLmVuY29kZShxdWVyeVJlc3VsdC5sYXN0S2V5IGFzIER5bmFtb0tleSB8IHVuZGVmaW5lZClcbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogRGVsZXRlcyBvbmUgaXRlbS1idW5kbGUgYnkgcHJpbWFyeSBrZXkuXG4gICAgICovXG4gICAgZGVsZXRlQnlJZCA9IGFzeW5jIChidW5kbGVJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgIGF3YWl0IHRoaXMuZGVsZXRlKGJ1bmRsZUlkKTtcbiAgICB9O1xufVxuXG5leHBvcnQgY29uc3QgaXRlbXNCdW5kbGVEYW8gPSBuZXcgSXRlbXNCdW5kbGVEYW8oKTtcbiJdfQ==
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { BaseDynamooseModel } from "../../base-dynamoose-model";
|
|
2
|
+
/**
|
|
3
|
+
* Decides how the bundle is applied on a platter item.
|
|
4
|
+
* - ADDON → extra items added on top of the platter
|
|
5
|
+
* - REPLACEMENT → swaps an existing platter item
|
|
6
|
+
*/
|
|
7
|
+
export declare const ITEM_BUNDLE_USAGE_TYPE: {
|
|
8
|
+
readonly ADDON: "ADDON";
|
|
9
|
+
readonly REPLACEMENT: "REPLACEMENT";
|
|
10
|
+
};
|
|
11
|
+
export type ItemBundleUsageType = (typeof ITEM_BUNDLE_USAGE_TYPE)[keyof typeof ITEM_BUNDLE_USAGE_TYPE];
|
|
12
|
+
export interface ItemsBundle extends BaseDynamooseModel {
|
|
13
|
+
bundleId: string;
|
|
14
|
+
bundleType: string;
|
|
15
|
+
bundleName: string;
|
|
16
|
+
usageType: ItemBundleUsageType;
|
|
17
|
+
bundleOrder?: number;
|
|
18
|
+
}
|
|
19
|
+
export type CreateItemsBundleInput = Omit<ItemsBundle, "bundleId"> & {
|
|
20
|
+
bundleId?: string;
|
|
21
|
+
};
|
|
22
|
+
export declare const ItemsBundleModel: import("dynamoose/dist/General").ModelType<ItemsBundle>;
|
|
23
|
+
export declare const convertToItemsBundleModel: (input: CreateItemsBundleInput | ItemsBundle) => ItemsBundle;
|
|
@@ -0,0 +1,62 @@
|
|
|
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.convertToItemsBundleModel = exports.ItemsBundleModel = exports.ITEM_BUNDLE_USAGE_TYPE = 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
|
+
/**
|
|
12
|
+
* Decides how the bundle is applied on a platter item.
|
|
13
|
+
* - ADDON → extra items added on top of the platter
|
|
14
|
+
* - REPLACEMENT → swaps an existing platter item
|
|
15
|
+
*/
|
|
16
|
+
exports.ITEM_BUNDLE_USAGE_TYPE = {
|
|
17
|
+
ADDON: "ADDON",
|
|
18
|
+
REPLACEMENT: "REPLACEMENT"
|
|
19
|
+
};
|
|
20
|
+
const itemsBundleSchema = new dynamoose_1.default.Schema({
|
|
21
|
+
bundleId: {
|
|
22
|
+
type: String,
|
|
23
|
+
hashKey: true,
|
|
24
|
+
required: true,
|
|
25
|
+
default: () => (0, crypto_1.randomUUID)()
|
|
26
|
+
},
|
|
27
|
+
bundleType: {
|
|
28
|
+
type: String,
|
|
29
|
+
required: true,
|
|
30
|
+
index: {
|
|
31
|
+
name: "bundleTypeIndex",
|
|
32
|
+
type: "global"
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
bundleName: {
|
|
36
|
+
type: String,
|
|
37
|
+
required: true
|
|
38
|
+
},
|
|
39
|
+
bundleOrder: {
|
|
40
|
+
type: Number,
|
|
41
|
+
required: false
|
|
42
|
+
},
|
|
43
|
+
usageType: {
|
|
44
|
+
type: String,
|
|
45
|
+
required: true,
|
|
46
|
+
enum: [exports.ITEM_BUNDLE_USAGE_TYPE.ADDON, exports.ITEM_BUNDLE_USAGE_TYPE.REPLACEMENT],
|
|
47
|
+
index: {
|
|
48
|
+
name: "usageTypeIndex",
|
|
49
|
+
type: "global"
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
...base_dynamoose_model_1.BASE_DYNAMOOSE_AUDIT_SCHEMA
|
|
53
|
+
}, {
|
|
54
|
+
saveUnknown: false,
|
|
55
|
+
timestamps: true
|
|
56
|
+
});
|
|
57
|
+
exports.ItemsBundleModel = dynamoose_1.default.model(table_names_1.TABLE_NAMES.ITEMS_BUNDLE, itemsBundleSchema, { create: false, waitForActive: false });
|
|
58
|
+
const convertToItemsBundleModel = (input) => {
|
|
59
|
+
return new exports.ItemsBundleModel(input);
|
|
60
|
+
};
|
|
61
|
+
exports.convertToItemsBundleModel = convertToItemsBundleModel;
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbXMtYnVuZGxlLW1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2N1c3RvbWVyLXVzZXIvaXRlbXMtYnVuZGxlL2l0ZW1zLWJ1bmRsZS1tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwwREFBa0M7QUFDbEMsbUNBQW9DO0FBQ3BDLHFFQUE2RjtBQUM3RiwwREFBdUQ7QUFFdkQ7Ozs7R0FJRztBQUNVLFFBQUEsc0JBQXNCLEdBQUc7SUFDbEMsS0FBSyxFQUFFLE9BQU87SUFDZCxXQUFXLEVBQUUsYUFBYTtDQUNwQixDQUFDO0FBaUJYLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxtQkFBUyxDQUFDLE1BQU0sQ0FDMUM7SUFDSSxRQUFRLEVBQUU7UUFDTixJQUFJLEVBQUUsTUFBTTtRQUNaLE9BQU8sRUFBRSxJQUFJO1FBQ2IsUUFBUSxFQUFFLElBQUk7UUFDZCxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBQSxtQkFBVSxHQUFFO0tBQzlCO0lBQ0QsVUFBVSxFQUFFO1FBQ1IsSUFBSSxFQUFFLE1BQU07UUFDWixRQUFRLEVBQUUsSUFBSTtRQUNkLEtBQUssRUFBRTtZQUNILElBQUksRUFBRSxpQkFBaUI7WUFDdkIsSUFBSSxFQUFFLFFBQVE7U0FDakI7S0FDSjtJQUNELFVBQVUsRUFBRTtRQUNSLElBQUksRUFBRSxNQUFNO1FBQ1osUUFBUSxFQUFFLElBQUk7S0FDakI7SUFDRCxXQUFXLEVBQUU7UUFDVCxJQUFJLEVBQUUsTUFBTTtRQUNaLFFBQVEsRUFBRSxLQUFLO0tBQ2xCO0lBQ0QsU0FBUyxFQUFFO1FBQ1AsSUFBSSxFQUFFLE1BQU07UUFDWixRQUFRLEVBQUUsSUFBSTtRQUNkLElBQUksRUFBRSxDQUFDLDhCQUFzQixDQUFDLEtBQUssRUFBRSw4QkFBc0IsQ0FBQyxXQUFXLENBQUM7UUFDeEUsS0FBSyxFQUFFO1lBQ0gsSUFBSSxFQUFFLGdCQUFnQjtZQUN0QixJQUFJLEVBQUUsUUFBUTtTQUNqQjtLQUNKO0lBQ0QsR0FBRyxrREFBMkI7Q0FDakMsRUFDRDtJQUNJLFdBQVcsRUFBRSxLQUFLO0lBQ2xCLFVBQVUsRUFBRSxJQUFJO0NBQ25CLENBQ0osQ0FBQztBQUVXLFFBQUEsZ0JBQWdCLEdBQUcsbUJBQVMsQ0FBQyxLQUFLLENBQzNDLHlCQUFXLENBQUMsWUFBWSxFQUN4QixpQkFBaUIsRUFDakIsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsQ0FDMUMsQ0FBQztBQUVLLE1BQU0seUJBQXlCLEdBQUcsQ0FBQyxLQUEyQyxFQUFFLEVBQUU7SUFDckYsT0FBTyxJQUFJLHdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3ZDLENBQUMsQ0FBQztBQUZXLFFBQUEseUJBQXlCLDZCQUVwQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkeW5hbW9vc2UgZnJvbSBcImR5bmFtb29zZVwiO1xuaW1wb3J0IHsgcmFuZG9tVVVJRCB9IGZyb20gXCJjcnlwdG9cIjtcbmltcG9ydCB7IEJBU0VfRFlOQU1PT1NFX0FVRElUX1NDSEVNQSwgQmFzZUR5bmFtb29zZU1vZGVsIH0gZnJvbSBcIi4uLy4uL2Jhc2UtZHluYW1vb3NlLW1vZGVsXCI7XG5pbXBvcnQgeyBUQUJMRV9OQU1FUyB9IGZyb20gXCIuLi8uLi9jb25maWcvdGFibGUtbmFtZXNcIjtcblxuLyoqXG4gKiBEZWNpZGVzIGhvdyB0aGUgYnVuZGxlIGlzIGFwcGxpZWQgb24gYSBwbGF0dGVyIGl0ZW0uXG4gKiAtIEFERE9OIOKGkiBleHRyYSBpdGVtcyBhZGRlZCBvbiB0b3Agb2YgdGhlIHBsYXR0ZXJcbiAqIC0gUkVQTEFDRU1FTlQg4oaSIHN3YXBzIGFuIGV4aXN0aW5nIHBsYXR0ZXIgaXRlbVxuICovXG5leHBvcnQgY29uc3QgSVRFTV9CVU5ETEVfVVNBR0VfVFlQRSA9IHtcbiAgICBBRERPTjogXCJBRERPTlwiLFxuICAgIFJFUExBQ0VNRU5UOiBcIlJFUExBQ0VNRU5UXCJcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEl0ZW1CdW5kbGVVc2FnZVR5cGUgPVxuICAgICh0eXBlb2YgSVRFTV9CVU5ETEVfVVNBR0VfVFlQRSlba2V5b2YgdHlwZW9mIElURU1fQlVORExFX1VTQUdFX1RZUEVdO1xuXG5leHBvcnQgaW50ZXJmYWNlIEl0ZW1zQnVuZGxlIGV4dGVuZHMgQmFzZUR5bmFtb29zZU1vZGVsIHtcbiAgICBidW5kbGVJZDogc3RyaW5nO1xuICAgIGJ1bmRsZVR5cGU6IHN0cmluZztcbiAgICBidW5kbGVOYW1lOiBzdHJpbmc7XG4gICAgdXNhZ2VUeXBlOiBJdGVtQnVuZGxlVXNhZ2VUeXBlO1xuICAgIGJ1bmRsZU9yZGVyPzogbnVtYmVyO1xufVxuXG5leHBvcnQgdHlwZSBDcmVhdGVJdGVtc0J1bmRsZUlucHV0ID0gT21pdDxJdGVtc0J1bmRsZSwgXCJidW5kbGVJZFwiPiAmIHtcbiAgICBidW5kbGVJZD86IHN0cmluZztcbn07XG5cbmNvbnN0IGl0ZW1zQnVuZGxlU2NoZW1hID0gbmV3IGR5bmFtb29zZS5TY2hlbWEoXG4gICAge1xuICAgICAgICBidW5kbGVJZDoge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgaGFzaEtleTogdHJ1ZSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgZGVmYXVsdDogKCkgPT4gcmFuZG9tVVVJRCgpXG4gICAgICAgIH0sXG4gICAgICAgIGJ1bmRsZVR5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgaW5kZXg6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBcImJ1bmRsZVR5cGVJbmRleFwiLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwiZ2xvYmFsXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgYnVuZGxlTmFtZToge1xuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgYnVuZGxlT3JkZXI6IHtcbiAgICAgICAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICB1c2FnZVR5cGU6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgZW51bTogW0lURU1fQlVORExFX1VTQUdFX1RZUEUuQURET04sIElURU1fQlVORExFX1VTQUdFX1RZUEUuUkVQTEFDRU1FTlRdLFxuICAgICAgICAgICAgaW5kZXg6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBcInVzYWdlVHlwZUluZGV4XCIsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJnbG9iYWxcIlxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAuLi5CQVNFX0RZTkFNT09TRV9BVURJVF9TQ0hFTUFcbiAgICB9LFxuICAgIHtcbiAgICAgICAgc2F2ZVVua25vd246IGZhbHNlLFxuICAgICAgICB0aW1lc3RhbXBzOiB0cnVlXG4gICAgfVxuKTtcblxuZXhwb3J0IGNvbnN0IEl0ZW1zQnVuZGxlTW9kZWwgPSBkeW5hbW9vc2UubW9kZWw8SXRlbXNCdW5kbGU+KFxuICAgIFRBQkxFX05BTUVTLklURU1TX0JVTkRMRSxcbiAgICBpdGVtc0J1bmRsZVNjaGVtYSxcbiAgICB7IGNyZWF0ZTogZmFsc2UsIHdhaXRGb3JBY3RpdmU6IGZhbHNlIH1cbik7XG5cbmV4cG9ydCBjb25zdCBjb252ZXJ0VG9JdGVtc0J1bmRsZU1vZGVsID0gKGlucHV0OiBDcmVhdGVJdGVtc0J1bmRsZUlucHV0IHwgSXRlbXNCdW5kbGUpID0+IHtcbiAgICByZXR1cm4gbmV3IEl0ZW1zQnVuZGxlTW9kZWwoaW5wdXQpO1xufTtcbiJdfQ==
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { GenericDynamooseDAO } from "../../base-dynamoose-dao";
|
|
2
|
+
import { AuthContext } from "../../base-dynamoose-model";
|
|
3
|
+
import { CreateLsqPriorityUpdationInput, LsqPassedStr, LsqPriorityUpdation } from "./lsq-priority-updation-model";
|
|
4
|
+
type ListResult = {
|
|
5
|
+
items: LsqPriorityUpdation[];
|
|
6
|
+
nextToken?: string;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* DAO for LeadSquared priority-updation queue.
|
|
10
|
+
*
|
|
11
|
+
* Table keys: `lsqPriorityUpdationId` (PK).
|
|
12
|
+
* Lookups:
|
|
13
|
+
* - `opportunityIdIndex` → by LeadSquared `opportunityId`
|
|
14
|
+
* - `leadNumberIndex` → by lead phone/number
|
|
15
|
+
* - `statusIndex` → by record `status`
|
|
16
|
+
* - `passedStrIndex` → unprocessed queue (`passedStr` + `priorityRank`)
|
|
17
|
+
* Processed rows are deleted from the table (not soft-flagged).
|
|
18
|
+
*/
|
|
19
|
+
declare class LsqPriorityUpdationDao extends GenericDynamooseDAO<LsqPriorityUpdation> {
|
|
20
|
+
constructor();
|
|
21
|
+
private normalizeInput;
|
|
22
|
+
/**
|
|
23
|
+
* Creates / queues one opportunity for priority updation.
|
|
24
|
+
*
|
|
25
|
+
* Use when: LeadSquared webhook receives a new/updated opportunity.
|
|
26
|
+
* - `lsqPriorityUpdationId` auto-generates if omitted.
|
|
27
|
+
* - Auto-fills `passedStr` from `passed` (`false` → `"FALSE"`).
|
|
28
|
+
* - Auto-fills `priorityRank` from `priority` (P1→1 … P5→5).
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* await lsqPriorityUpdationDao.save({
|
|
32
|
+
* opportunityId: "opp-123",
|
|
33
|
+
* leadNumber: "9876543210",
|
|
34
|
+
* passed: false,
|
|
35
|
+
* priority: "P1",
|
|
36
|
+
* urgency: "U2",
|
|
37
|
+
* value: "V3",
|
|
38
|
+
* eventDate: "2026-07-30",
|
|
39
|
+
* payload: { raw: "webhook-body" }
|
|
40
|
+
* });
|
|
41
|
+
*/
|
|
42
|
+
save: (item: CreateLsqPriorityUpdationInput, authContext?: AuthContext) => Promise<LsqPriorityUpdation>;
|
|
43
|
+
/**
|
|
44
|
+
* Updates an existing queued record by `lsqPriorityUpdationId`.
|
|
45
|
+
*
|
|
46
|
+
* Use when: recalculating priority/urgency/value (e.g. midnight job) or
|
|
47
|
+
* refreshing webhook payload fields.
|
|
48
|
+
* - Re-syncs `passedStr` / `priorityRank` when `passed` / `priority` change.
|
|
49
|
+
* - Always refreshes `updatedAt`.
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* await lsqPriorityUpdationDao.update("lsq-uuid", {
|
|
53
|
+
* priority: "P2",
|
|
54
|
+
* urgency: "U1",
|
|
55
|
+
* value: "V2"
|
|
56
|
+
* });
|
|
57
|
+
*/
|
|
58
|
+
update: (lsqPriorityUpdationId: string, updates: Partial<LsqPriorityUpdation>, authContext?: AuthContext) => Promise<LsqPriorityUpdation>;
|
|
59
|
+
/**
|
|
60
|
+
* Fetches one queue record by table primary key.
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* const row = await lsqPriorityUpdationDao.getById("lsq-uuid");
|
|
64
|
+
*/
|
|
65
|
+
getById: (lsqPriorityUpdationId: string) => Promise<LsqPriorityUpdation | null>;
|
|
66
|
+
/**
|
|
67
|
+
* Fetches one queue record by LeadSquared `opportunityId` (GSI `opportunityIdIndex`).
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* const row = await lsqPriorityUpdationDao.getByOpportunityId("opp-123");
|
|
71
|
+
*/
|
|
72
|
+
getByOpportunityId: (opportunityId: string) => Promise<LsqPriorityUpdation | null>;
|
|
73
|
+
/**
|
|
74
|
+
* Lists queue records by LeadSquared `opportunityId` (GSI `opportunityIdIndex`).
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* const { items } = await lsqPriorityUpdationDao.listByOpportunityId("opp-123");
|
|
78
|
+
*/
|
|
79
|
+
listByOpportunityId: (opportunityId: string, limit?: number, token?: string) => Promise<ListResult>;
|
|
80
|
+
/**
|
|
81
|
+
* Fetches one queue record by `leadNumber` (GSI `leadNumberIndex`).
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* const row = await lsqPriorityUpdationDao.getByLeadNumber("9876543210");
|
|
85
|
+
*/
|
|
86
|
+
getByLeadNumber: (leadNumber: string) => Promise<LsqPriorityUpdation | null>;
|
|
87
|
+
/**
|
|
88
|
+
* Lists queue records by `leadNumber` (GSI `leadNumberIndex`).
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* const { items } = await lsqPriorityUpdationDao.listByLeadNumber("9876543210");
|
|
92
|
+
*/
|
|
93
|
+
listByLeadNumber: (leadNumber: string, limit?: number, token?: string) => Promise<ListResult>;
|
|
94
|
+
/**
|
|
95
|
+
* Lists queue records by `status` (GSI `statusIndex`).
|
|
96
|
+
*
|
|
97
|
+
* @example
|
|
98
|
+
* const { items } = await lsqPriorityUpdationDao.listByStatus("PENDING", 25);
|
|
99
|
+
*/
|
|
100
|
+
listByStatus: (status: string, limit?: number, token?: string) => Promise<ListResult>;
|
|
101
|
+
/**
|
|
102
|
+
* Lists queued (unprocessed) opportunities sorted by `priorityRank` ascending.
|
|
103
|
+
*
|
|
104
|
+
* Use when: worker pulls next batch of unassigned LSQ priority updates.
|
|
105
|
+
* Queries GSI `passedStrIndex` with `passedStr = "FALSE"`.
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
* const { items, nextToken } = await lsqPriorityUpdationDao.listUnprocessed(25);
|
|
109
|
+
*/
|
|
110
|
+
listUnprocessed: (limit?: number, token?: string) => Promise<ListResult>;
|
|
111
|
+
/**
|
|
112
|
+
* Lists opportunities by `passedStr` (GSI `passedStrIndex`), sorted by `priorityRank`.
|
|
113
|
+
*
|
|
114
|
+
* @example
|
|
115
|
+
* const queued = await lsqPriorityUpdationDao.listByPassedStr("FALSE", 25);
|
|
116
|
+
*/
|
|
117
|
+
listByPassedStr: (passedStr: LsqPassedStr, limit?: number, token?: string) => Promise<ListResult>;
|
|
118
|
+
/**
|
|
119
|
+
* Marks a queue row as processed by deleting it via primary key.
|
|
120
|
+
*
|
|
121
|
+
* Use when: worker successfully applied priority update in LeadSquared.
|
|
122
|
+
*
|
|
123
|
+
* @example
|
|
124
|
+
* await lsqPriorityUpdationDao.markProcessed("lsq-uuid");
|
|
125
|
+
*/
|
|
126
|
+
markProcessed: (lsqPriorityUpdationId: string) => Promise<void>;
|
|
127
|
+
/**
|
|
128
|
+
* Marks processed by LeadSquared `opportunityId` (lookup GSI, then delete by PK).
|
|
129
|
+
*
|
|
130
|
+
* @example
|
|
131
|
+
* await lsqPriorityUpdationDao.markProcessedByOpportunityId("opp-123");
|
|
132
|
+
*/
|
|
133
|
+
markProcessedByOpportunityId: (opportunityId: string) => Promise<boolean>;
|
|
134
|
+
/**
|
|
135
|
+
* Deletes one queue record by primary key.
|
|
136
|
+
*/
|
|
137
|
+
deleteById: (lsqPriorityUpdationId: string) => Promise<void>;
|
|
138
|
+
}
|
|
139
|
+
export declare const lsqPriorityUpdationDao: LsqPriorityUpdationDao;
|
|
140
|
+
export {};
|