cmp-aws-database 2.1.2-dev.6 → 2.1.2-dev.61
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-model.d.ts +7 -0
- package/dist/customer-user/cart/cart-model.js +25 -2
- package/dist/customer-user/catalogue/catalogue-items-model.js +5 -1
- 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 +2 -0
- package/dist/customer-user/cutlery/cutlery-model.js +9 -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/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-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 +13 -0
- package/dist/customer-user/order-module/plate-order/plate-order-model.js +46 -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,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 {};
|