@knovator/pagecreator-node 0.0.5 → 0.0.7

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/README.md CHANGED
@@ -1,4 +1,5 @@
1
1
  <!-- Improved compatibility of back to top link: See: https://github.com/othneildrew/Best-README-Template/pull/73 -->
2
+
2
3
  <a name="readme-top"></a>
3
4
 
4
5
  [![Contributors][contributors-shield]][contributors-url]
@@ -7,8 +8,6 @@
7
8
  [![Issues][issues-shield]][issues-url]
8
9
  [![MIT License][license-shield]][license-url]
9
10
 
10
-
11
-
12
11
  <!-- PROJECT LOGO -->
13
12
  <br />
14
13
  <div align="center">
@@ -32,8 +31,6 @@
32
31
  </p>
33
32
  </div>
34
33
 
35
-
36
-
37
34
  <!-- TABLE OF CONTENTS -->
38
35
  <details>
39
36
  <summary>Table of Contents</summary>
@@ -59,34 +56,35 @@
59
56
  </ol>
60
57
  </details>
61
58
 
62
-
63
-
64
59
  <!-- ABOUT THE PROJECT -->
60
+
65
61
  ## About The Project
66
62
 
67
63
  `@knovator/pagecreator-node` is built with intent to build pages that are depend on backend data, and admin can change how page will look like.
68
64
 
69
65
  <p align="right">(<a href="#readme-top">back to top</a>)</p>
70
66
 
71
-
72
67
  ### Built With
73
68
 
74
- * [Typescript](https://www.typescriptlang.org/)
75
- * [mongoose](https://mongoosejs.com/)
76
- * [express](https://expressjs.com/)
77
- * [mongoose-paginate-v2](https://www.npmjs.com/package/mongoose-paginate-v2)
78
- * [joi](https://www.npmjs.com/package/joi)
69
+ - [Typescript](https://www.typescriptlang.org/)
70
+ - [mongoose](https://mongoosejs.com/)
71
+ - [express](https://expressjs.com/)
72
+ - [mongoose-paginate-v2](https://www.npmjs.com/package/mongoose-paginate-v2)
73
+ - [joi](https://www.npmjs.com/package/joi)
79
74
 
80
75
  <p align="right">(<a href="#readme-top">back to top</a>)</p>
81
76
 
82
77
  <!-- GETTING STARTED -->
78
+
83
79
  ## Getting Started
84
80
 
85
81
  To integrate `@knovator/pagecreator-node`, you should be having basic nodejs application up and running with express (optionally using mongoose for mongodb database). `@knovator/pagecreator-node` provides routes for `widget`, `page`, `tile` and `user` to use in application.
86
82
 
87
83
  ### Prerequisites
84
+
88
85
  - It's good start to have `nodejs` application up and running with `express`. Good to have used [i18next](https://www.npmjs.com/package/i18next) to add message in response codes.
89
86
  - `routes` uses `mongoose` connection established by application, so it's required to connect to database before using package. Example,
87
+
90
88
  ```js
91
89
  // db.js
92
90
  const mongoose = require('mongoose');
@@ -100,57 +98,58 @@ To integrate `@knovator/pagecreator-node`, you should be having basic nodejs app
100
98
 
101
99
  module.exports = mongoose;
102
100
  ```
101
+
103
102
  - Image upload route for `upload` & `remove` is needed to declare externally. Example,
103
+
104
104
  ```js
105
105
  // fileRoute.js
106
106
  const express = require('express');
107
107
  const router = express.Router();
108
108
 
109
109
  router.post(`/files/upload`, (req, res) => {
110
- // TO DO: some file storage operation
111
- let uri = "/image.jpg";
112
- let id = "62c54b15524b6b59d2313c02";
113
- res.json({
114
- code: 'SUCCESS',
115
- data: { id, uri },
116
- message: 'File uploaded successfully'
117
- });
110
+ // TO DO: some file storage operation
111
+ let uri = '/image.jpg';
112
+ let id = '62c54b15524b6b59d2313c02';
113
+ res.json({
114
+ code: 'SUCCESS',
115
+ data: { id, uri },
116
+ message: 'File uploaded successfully',
117
+ });
118
118
  });
119
119
 
120
120
  router.delete(`/files/remove/:id`, (req, res) => {
121
- // TO DO: some file remove operation
122
- res.json({
123
- code: 'SUCCESS',
124
- data: {},
125
- message: 'File removed successfully'
126
- })
127
- })
121
+ // TO DO: some file remove operation
122
+ res.json({
123
+ code: 'SUCCESS',
124
+ data: {},
125
+ message: 'File removed successfully',
126
+ });
127
+ });
128
128
 
129
129
  module.exports = router;
130
130
  ```
131
131
 
132
-
133
-
134
132
  **Sample App file**
135
- ```js
136
- require('./src/db');
137
- require('./src/models/file');
138
-
139
- const cors = require('cors');
140
- const express = require("express");
141
- const fileRoutes = require('./fileRoute.js');
142
- const PORT = 8080;
143
-
144
- const app = express();
145
- app.use(cors());
146
- app.use(express.static("public"));
147
- app.use(fileRoutes);
148
-
149
- // ...
150
- app.listen(PORT, () => {
151
- console.log(`App started on ${PORT}`);
152
- });
153
- ```
133
+
134
+ ```js
135
+ require('./src/db');
136
+ require('./src/models/file');
137
+
138
+ const cors = require('cors');
139
+ const express = require('express');
140
+ const fileRoutes = require('./fileRoute.js');
141
+ const PORT = 8080;
142
+
143
+ const app = express();
144
+ app.use(cors());
145
+ app.use(express.static('public'));
146
+ app.use(fileRoutes);
147
+
148
+ // ...
149
+ app.listen(PORT, () => {
150
+ console.log(`App started on ${PORT}`);
151
+ });
152
+ ```
154
153
 
155
154
  ### Installation
156
155
 
@@ -163,76 +162,137 @@ To integrate `@knovator/pagecreator-node`, you should be having basic nodejs app
163
162
 
164
163
  <p align="right">(<a href="#readme-top">back to top</a>)</p>
165
164
 
166
-
167
-
168
165
  <!-- USAGE EXAMPLES -->
166
+
169
167
  ## Usage
170
168
 
171
169
  App/Main file is a good place to use `@knovator/pagecreator-node`
172
- ```js
173
- const { setConfig, WidgetRoutes, TileRoutes, FileUploadRoute, PageRoutes, UserRoutes } = require('@knovator/pagecreator-node');
174
-
175
- setConfig({
176
- collections: [
177
- {
178
- title: 'Notifications',
179
- collectionName: 'notifications',
180
- filters: { isDeleted: false, isActive: true },
181
- searchColumns: ['name', 'code'],
182
- },
183
- ],
184
- });
185
170
 
186
- app.use('/widgets', WidgetRoutes);
187
- app.use('/tiles', TileRoutes);
188
- app.use('/media', FileUploadRoute);
189
- app.use('/pages', PageRoutes);
190
- app.use('/users', UserRoutes);
191
-
192
- app.listen(PORT, () => {
193
- console.log(`App started on ${PORT}`);
194
- });
171
+ ```js
172
+ const {
173
+ setConfig,
174
+ WidgetRoutes,
175
+ TileRoutes,
176
+ FileUploadRoute,
177
+ PageRoutes,
178
+ UserRoutes,
179
+ } = require('@knovator/pagecreator-node');
180
+
181
+ setConfig({
182
+ collections: [
183
+ {
184
+ title: 'Notifications',
185
+ collectionName: 'notifications',
186
+ filters: { isDeleted: false, isActive: true },
187
+ searchColumns: ['name', 'code'],
188
+ },
189
+ ],
190
+ });
191
+
192
+ app.use('/widgets', WidgetRoutes);
193
+ app.use('/tiles', TileRoutes);
194
+ app.use('/media', FileUploadRoute);
195
+ app.use('/pages', PageRoutes);
196
+ app.use('/users', UserRoutes);
197
+
198
+ app.listen(PORT, () => {
199
+ console.log(`App started on ${PORT}`);
200
+ });
195
201
  ```
196
202
 
197
203
  Through `setConfig` function e can set `logger`, `collections` and `catchAsync` functions as parameters. By `collections`, we can add reference of application collections.
204
+
198
205
  ### parameter explanations
206
+
199
207
  - `logger`
200
208
  - Provides ability to add logging for Database and Validation
201
209
  ```js
202
210
  // default
203
- console
211
+ console;
204
212
  ```
205
213
  - `catchAsync`
206
214
  - Wraps functions to handle async errors
207
- ```js
208
- // default
209
- function catchAsync(fn) {
210
- return function (req, res, next) {
211
- Promise.resolve(fn(req, res, next)).catch((err) => {
212
- // this.logger.error(err.message);
213
- res.status(internalServerError).json({
214
- code: RESPONSE_CODE.ERROR,
215
- message: err.message,
216
- data: {},
217
- });
215
+ ```js
216
+ // default
217
+ function catchAsync(fn) {
218
+ return function (req, res, next) {
219
+ Promise.resolve(fn(req, res, next)).catch((err) => {
220
+ // this.logger.error(err.message);
221
+ res.status(internalServerError).json({
222
+ code: RESPONSE_CODE.ERROR,
223
+ message: err.message,
224
+ data: {},
218
225
  });
219
- };
220
- }
221
- ```
226
+ });
227
+ };
228
+ }
229
+ ```
222
230
  - `collections`
223
- - Array of collection items to add reference of collections in package.
231
+ - Array of collection items to add reference of collections in package.
224
232
 
225
233
  #### Collection Item Format
226
- | Code | Description |
227
- | --- | ----------- |
228
- | title | Title of collection name to show in UI |
229
- | collectionName | Collection name specified in database |
230
- | filters | Filter object to apply while getting data, like `{ isDeleted: false, isActive: true }` |
231
- | searchColumns | Array of fields to to perform search |
234
+
235
+ | Code | Description |
236
+ | -------------- | -------------------------------------------------------------------------------------- |
237
+ | title | Title of collection name to show in UI |
238
+ | collectionName | Collection name specified in database |
239
+ | filters | Filter object to apply while getting data, like `{ isDeleted: false, isActive: true }` |
240
+ | searchColumns | Array of fields to to perform search |
241
+ | lookup | `$lookup` object to apply while getting data through aggregation |
242
+ | project | `$project` object to apply while getting data through aggregation |
243
+ | match | `$match` object to apply while getting data through aggregation |
244
+
245
+ **Example**,
246
+
247
+ ```js
248
+ setConfig({
249
+ collections: [
250
+ {
251
+ title: 'Notifications',
252
+ collectionName: 'notifications',
253
+ filters: { isDeleted: false, isActive: true },
254
+ searchColumns: ['name', 'code'],
255
+ lookup: {
256
+ from: 'file',
257
+ let: {
258
+ id: '$fileId',
259
+ },
260
+ pipeline: [
261
+ {
262
+ $match: {
263
+ $expr: {
264
+ $eq: ['$_id', '$$id'],
265
+ },
266
+ },
267
+ },
268
+ {
269
+ $project: {
270
+ _id: 1,
271
+ nm: 1,
272
+ uri: 1,
273
+ mimeType: 1,
274
+ },
275
+ },
276
+ ],
277
+ as: 'fileId',
278
+ },
279
+ project: {
280
+ _id: 1,
281
+ nm: 1,
282
+ fileId: 1,
283
+ },
284
+ match: {
285
+ deletedAt: { $exists: false },
286
+ },
287
+ },
288
+ ],
289
+ });
290
+ ```
232
291
 
233
292
  ## Routes Infomration
234
293
 
235
294
  Response follows following structure
295
+
236
296
  ```js
237
297
  {
238
298
  code: RESPONSE_CODES,
@@ -242,93 +302,102 @@ Response follows following structure
242
302
  ```
243
303
 
244
304
  ### Response Codes
245
- | Code | Description |
246
- | --- | ----------- |
305
+
306
+ | Code | Description |
307
+ | ------- | ------------------------------------ |
247
308
  | SUCCESS | When request fullfiled without error |
248
- | ERROR | When request fullfiled with error |
309
+ | ERROR | When request fullfiled with error |
249
310
 
250
311
  ### Custom Validation messages
251
- | Message | Description |
252
- | --- | ----------- |
312
+
313
+ | Message | Description |
314
+ | ---------------------------------- | ----------------------------------------------- |
253
315
  | Widget with same code is available | When widget with same code is exist in database |
254
316
 
255
317
  ### HTTP Status Codes
256
- | HTTP | Description |
257
- | --- | ----------- |
258
- | 200 | When request fullfiled without error |
259
- | 201 | When document is created |
260
- | 500 | When internal server occurred |
261
- | 422 | When Validation error occurred |
318
+
319
+ | HTTP | Description |
320
+ | ---- | ------------------------------------ |
321
+ | 200 | When request fullfiled without error |
322
+ | 201 | When document is created |
323
+ | 500 | When internal server occurred |
324
+ | 422 | When Validation error occurred |
262
325
 
263
326
  ### Routes
327
+
264
328
  This are the routes that gets integrated by `@knovator/pagecreator-node`,
329
+
265
330
  #### Widget
266
- | Route | Method | Description |
267
- | --- | ----- | ----------- |
268
- | `/widget-types` | **GET** | Get widget-types like `Image` and provided `collections` |
269
- | `/selection-types` | **GET** | Get Selection types like `Fixed Card` and `Carousel` |
270
- | `/list` | **POST** | List widget data in pagination |
271
- | `/` | **POST** | Create `widget` |
272
- | `/:id` | **PUT** | Update `widget` |
273
- | `/:id` | **PATCH** | Partial Update `widget` |
274
- | `/:id` | **DELETE** | Delete widget whose `id` send in body |
275
- | `/collection-data` | **POST** | Get collection data |
331
+
332
+ | Route | Method | Description |
333
+ | ------------------ | ---------- | -------------------------------------------------------- |
334
+ | `/widget-types` | **GET** | Get widget-types like `Image` and provided `collections` |
335
+ | `/selection-types` | **GET** | Get Selection types like `Fixed Card` and `Carousel` |
336
+ | `/list` | **POST** | List widget data in pagination |
337
+ | `/` | **POST** | Create `widget` |
338
+ | `/:id` | **PUT** | Update `widget` |
339
+ | `/:id` | **PATCH** | Partial Update `widget` |
340
+ | `/:id` | **DELETE** | Delete widget whose `id` send in body |
341
+ | `/collection-data` | **POST** | Get collection data |
276
342
 
277
343
  #### Page
278
- | Route | Method | Description |
279
- | --- | ----- | ----------- |
280
- | `/list` | **POST** | List page data in pagination |
281
- | `/` | **POST** | Create `page` |
282
- | `/:id` | **PUT** | Update `page` |
283
- | `/:id` | **DELETE** | Delete page whose `id` send in body |
344
+
345
+ | Route | Method | Description |
346
+ | ------- | ---------- | ----------------------------------- |
347
+ | `/list` | **POST** | List page data in pagination |
348
+ | `/` | **POST** | Create `page` |
349
+ | `/:id` | **PUT** | Update `page` |
350
+ | `/:id` | **DELETE** | Delete page whose `id` send in body |
284
351
 
285
352
  #### Tile
286
- | Route | Method | Description |
287
- | --- | ----- | ----------- |
288
- | `/:widgetId` | **GET** | Get Tiles data for `widgetId` |
289
- | `/` | **POST** | Create `tile` |
290
- | `/:id` | **PUT** | Update `tile` |
291
- | `/:id` | **DELETE** | Delete tile whose `id` send in body |
353
+
354
+ | Route | Method | Description |
355
+ | ------------ | ---------- | ----------------------------------- |
356
+ | `/:widgetId` | **GET** | Get Tiles data for `widgetId` |
357
+ | `/` | **POST** | Create `tile` |
358
+ | `/:id` | **PUT** | Update `tile` |
359
+ | `/:id` | **DELETE** | Delete tile whose `id` send in body |
292
360
 
293
361
  #### User
294
- | Route | Method | Description |
295
- | --- | ----- | ----------- |
362
+
363
+ | Route | Method | Description |
364
+ | -------------- | -------- | -------------------------------------------------------- |
296
365
  | `/widget-data` | **POST** | Get widget-data data for specified widget `code` in body |
297
- | `/page-data` | **POST** | Get page-data data for specified page `code` in body |
366
+ | `/page-data` | **POST** | Get page-data data for specified page `code` in body |
298
367
 
299
368
  ### `descriptor` codes & `i18n` code for messages
300
369
 
301
370
  Nextjs [i18n](https://www.npmjs.com/package/i18next) package adds facility for internationalization in nodejs application, and it's used in following manner
371
+
302
372
  ```js
303
373
  // usage
304
- req?.i18n?.(CODE)
374
+ req?.i18n?.(CODE);
305
375
  ```
306
- | CODE | Description |
307
- | --- | ----------- |
308
- | `widget.getWidgetTypes` | While fetching widget types |
309
- | `widget.getSelectionTypes` | While fetching selection types |
310
- | `widget.getAll` | While fetching widgets |
311
- | `widget.create` | While creating widget |
312
- | `widget.update` | While updating widget |
313
- | `widget.partialUpdate` | While doing partialUpdate for widget, like toggle `IsActive` |
314
- | `widget.delete` | While deleting widget |
315
- | `widget.getCollectionData` | While getting widget `collection-data` |
316
- | `page.getAll` | While getting pages in pagination |
317
- | `page.create` | While creating page |
318
- | `page.update` | While updating page |
319
- | `page.delete` | While deleting page |
320
- | `tile.getAll` | While getting tiles for widget |
321
- | `tile.create` | While creating tile |
322
- | `tile.update` | While updating tile |
323
- | `user.getWidgetData` | While getting widget data |
324
- | `user.getPageData` | While getting page data |
325
-
326
- <p align="right">(<a href="#readme-top">back to top</a>)</p>
327
-
328
376
 
377
+ | CODE | Description |
378
+ | -------------------------- | ------------------------------------------------------------ |
379
+ | `widget.getWidgetTypes` | While fetching widget types |
380
+ | `widget.getSelectionTypes` | While fetching selection types |
381
+ | `widget.getAll` | While fetching widgets |
382
+ | `widget.create` | While creating widget |
383
+ | `widget.update` | While updating widget |
384
+ | `widget.partialUpdate` | While doing partialUpdate for widget, like toggle `IsActive` |
385
+ | `widget.delete` | While deleting widget |
386
+ | `widget.getCollectionData` | While getting widget `collection-data` |
387
+ | `page.getAll` | While getting pages in pagination |
388
+ | `page.create` | While creating page |
389
+ | `page.update` | While updating page |
390
+ | `page.delete` | While deleting page |
391
+ | `tile.getAll` | While getting tiles for widget |
392
+ | `tile.create` | While creating tile |
393
+ | `tile.update` | While updating tile |
394
+ | `user.getWidgetData` | While getting widget data |
395
+ | `user.getPageData` | While getting page data |
329
396
 
397
+ <p align="right">(<a href="#readme-top">back to top</a>)</p>
330
398
 
331
399
  <!-- CONTRIBUTING -->
400
+
332
401
  ## Contributing
333
402
 
334
403
  Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.
@@ -344,20 +413,20 @@ Don't forget to give the project a star! Thanks again!
344
413
 
345
414
  <p align="right">(<a href="#top">back to top</a>)</p>
346
415
 
347
-
348
-
349
416
  <!-- LICENSE -->
417
+
350
418
  ## License
351
419
 
352
420
  Distributed under the MIT License. See `LICENSE.txt` for more information.
353
421
 
354
422
  <p align="right">(<a href="#top">back to top</a>)</p>
355
423
 
356
-
357
424
  <!-- CONTACT -->
425
+
358
426
  ## Contact
359
427
 
360
428
  Knovator Technologies
429
+
361
430
  - Twitter [@knovator](https://twitter.com/knovator)
362
431
  - Web [https://knovator.com/](https://knovator.com/)
363
432
 
@@ -365,9 +434,9 @@ Project Link: [https://github.com/knovator/pagecreator](https://github.com/knova
365
434
 
366
435
  <p align="right">(<a href="#top">back to top</a>)</p>
367
436
 
368
-
369
437
  <!-- MARKDOWN LINKS & IMAGES -->
370
438
  <!-- https://www.markdownguide.org/basic-syntax/#reference-style-links -->
439
+
371
440
  [contributors-shield]: https://img.shields.io/github/contributors/knovator/pagecreator.svg?style=for-the-badge
372
441
  [contributors-url]: https://github.com/knovator/pagecreator/graphs/contributors
373
442
  [forks-shield]: https://img.shields.io/github/forks/knovator/pagecreator.svg?style=for-the-badge
@@ -377,4 +446,4 @@ Project Link: [https://github.com/knovator/pagecreator](https://github.com/knova
377
446
  [issues-shield]: https://img.shields.io/github/issues/knovator/pagecreator.svg?style=for-the-badge
378
447
  [issues-url]: https://github.com/knovator/pagecreator/issues
379
448
  [license-shield]: https://img.shields.io/github/license/knovator/pagecreator.svg?style=for-the-badge
380
- [license-url]: https://github.com/knovator/pagecreator/blob/master/LICENSE.txt
449
+ [license-url]: https://github.com/knovator/pagecreator/blob/master/LICENSE.txt
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@knovator/pagecreator-node",
3
- "version": "0.0.5",
3
+ "version": "0.0.7",
4
4
  "type": "commonjs",
5
5
  "author": "knovator (https://knovator.com/)",
6
6
  "description": "PageCreator Node.js module",
@@ -2,20 +2,18 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getPageData = exports.getWidgetData = void 0;
4
4
  const tslib_1 = require("tslib");
5
+ const mongoose_1 = require("mongoose");
5
6
  const models_1 = require("./../models");
7
+ const helper_1 = require("../utils/helper");
6
8
  const responseHandlers_1 = require("./../utils/responseHandlers");
7
9
  const defaults_1 = require("../utils/defaults");
8
- const commonExcludedFields = {
9
- __v: 0,
10
- isDeleted: 0,
11
- deletedAt: 0,
12
- };
13
10
  const catchAsync = (fn) => {
14
11
  return defaults_1.defaults.catchAsync(fn, 'User');
15
12
  };
13
+ // TO Do: Optimize the following
16
14
  exports.getWidgetData = catchAsync((req, res) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
17
15
  const { code } = req.body;
18
- const newWidgetData = (yield models_1.Widget.aggregate([
16
+ const widgetDataArr = (yield models_1.Widget.aggregate([
19
17
  {
20
18
  $match: {
21
19
  isDeleted: false,
@@ -25,7 +23,7 @@ exports.getWidgetData = catchAsync((req, res) => tslib_1.__awaiter(void 0, void
25
23
  },
26
24
  {
27
25
  // Get only the fields that are not excluded
28
- $project: Object.assign({}, commonExcludedFields),
26
+ $project: Object.assign({}, defaults_1.commonExcludedFields),
29
27
  },
30
28
  {
31
29
  // Get Tiles data
@@ -42,7 +40,7 @@ exports.getWidgetData = catchAsync((req, res) => tslib_1.__awaiter(void 0, void
42
40
  },
43
41
  },
44
42
  {
45
- $project: Object.assign({}, commonExcludedFields),
43
+ $project: Object.assign({}, defaults_1.commonExcludedFields),
46
44
  },
47
45
  {
48
46
  $lookup: {
@@ -74,11 +72,36 @@ exports.getWidgetData = catchAsync((req, res) => tslib_1.__awaiter(void 0, void
74
72
  },
75
73
  },
76
74
  ]));
77
- if (!newWidgetData.length)
75
+ if (!widgetDataArr.length)
78
76
  throw new Error(`Widget not found`);
79
- yield models_1.Widget.populate(newWidgetData[0], { path: 'collectionItems' });
80
- return (0, responseHandlers_1.successResponse)(newWidgetData[0], res);
77
+ const widgetData = widgetDataArr[0];
78
+ if (widgetData.collectionName && widgetData.collectionItems.length > 0) {
79
+ const collectionConfig = defaults_1.defaults.collections.find((c) => c.collectionName === widgetData.collectionName);
80
+ const aggregateQuery = {
81
+ $match: Object.assign({ _id: {
82
+ $in: widgetData.collectionItems,
83
+ } }, ((collectionConfig === null || collectionConfig === void 0 ? void 0 : collectionConfig.match) || {})),
84
+ };
85
+ if (collectionConfig === null || collectionConfig === void 0 ? void 0 : collectionConfig.project)
86
+ aggregateQuery['$project'] = collectionConfig === null || collectionConfig === void 0 ? void 0 : collectionConfig.project;
87
+ if (collectionConfig === null || collectionConfig === void 0 ? void 0 : collectionConfig.lookup)
88
+ aggregateQuery['$lookup'] = collectionConfig === null || collectionConfig === void 0 ? void 0 : collectionConfig.lookup;
89
+ const aggregateQueryItem = [];
90
+ if (aggregateQuery['$match'])
91
+ aggregateQueryItem.push({ $match: aggregateQuery['$match'] });
92
+ if (aggregateQuery['$lookup'])
93
+ aggregateQueryItem.push({ $lookup: aggregateQuery['$lookup'] });
94
+ if (aggregateQuery['$project'])
95
+ aggregateQueryItem.push({ $project: aggregateQuery['$project'] });
96
+ const collectionItems = yield mongoose_1.models[widgetData.collectionName].aggregate(
97
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
98
+ // @ts-ignore
99
+ aggregateQueryItem);
100
+ widgetData.collectionItems = collectionItems;
101
+ }
102
+ return (0, responseHandlers_1.successResponse)(widgetData, res);
81
103
  }));
104
+ // TO Do: Optimize the following
82
105
  exports.getPageData = catchAsync((req, res) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
83
106
  var _a;
84
107
  const { code } = req.body;
@@ -110,7 +133,7 @@ exports.getPageData = catchAsync((req, res) => tslib_1.__awaiter(void 0, void 0,
110
133
  },
111
134
  },
112
135
  {
113
- $project: Object.assign({ widgetId: 0, sequence: 0 }, commonExcludedFields),
136
+ $project: Object.assign({ widgetId: 0, sequence: 0 }, defaults_1.commonExcludedFields),
114
137
  },
115
138
  {
116
139
  $lookup: {
@@ -126,7 +149,7 @@ exports.getPageData = catchAsync((req, res) => tslib_1.__awaiter(void 0, void 0,
126
149
  },
127
150
  },
128
151
  {
129
- $project: Object.assign({}, commonExcludedFields),
152
+ $project: Object.assign({}, defaults_1.commonExcludedFields),
130
153
  },
131
154
  {
132
155
  $lookup: {
@@ -164,10 +187,7 @@ exports.getPageData = catchAsync((req, res) => tslib_1.__awaiter(void 0, void 0,
164
187
  ]));
165
188
  if (!pageData.length)
166
189
  throw new Error('Page not found');
167
- yield models_1.Widget.populate(pageData[0].widgets, {
168
- path: 'collectionItems',
169
- options: { projection: commonExcludedFields },
170
- });
190
+ pageData[0].widgets = yield (0, helper_1.appendCollectionData)(pageData[0].widgets);
171
191
  res.message = (_a = req === null || req === void 0 ? void 0 : req.i18n) === null || _a === void 0 ? void 0 : _a.t('user.pageData');
172
192
  return (0, responseHandlers_1.successResponse)(pageData[0], res);
173
193
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"UserController.js","sourceRoot":"","sources":["../../../../../libs/node/src/controllers/UserController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UserController.js","sourceRoot":"","sources":["../../../../../libs/node/src/controllers/UserController.ts"],"names":[],"mappings":"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"}
@@ -7,21 +7,24 @@ require('express-list-endpoints-descriptor')(express_1.default);
7
7
  const validate_1 = tslib_1.__importDefault(require("../utils/validate"));
8
8
  const pageValidation = tslib_1.__importStar(require("../utils/validations/page"));
9
9
  const pageController = tslib_1.__importStar(require("../controllers/PageController"));
10
+ const descriptorPrefix = process.env['PAGECREATOR_DESCRIPTOR_PREFIX'] || '';
10
11
  const routes = express_1.default.Router();
11
12
  routes.use(express_1.default.json());
12
13
  // Get all pages
13
14
  routes
14
15
  .post(`/list`, (0, validate_1.default)(pageValidation.list), pageController.getPages)
15
- .descriptor('page.getAll');
16
+ .descriptor(`${descriptorPrefix}page.getAll`);
16
17
  // Create a page
17
18
  routes
18
19
  .post(`/`, (0, validate_1.default)(pageValidation.create), pageController.createPage)
19
- .descriptor('page.create');
20
+ .descriptor(`${descriptorPrefix}page.create`);
20
21
  // Update a page
21
22
  routes
22
23
  .put(`/:id`, (0, validate_1.default)(pageValidation.update), pageController.updatePage)
23
- .descriptor('page.update');
24
+ .descriptor(`${descriptorPrefix}page.update`);
24
25
  // Delete a page
25
- routes.delete(`/:id`, pageController.deletePage).descriptor('page.delete');
26
+ routes
27
+ .delete(`/:id`, pageController.deletePage)
28
+ .descriptor(`${descriptorPrefix}page.delete`);
26
29
  exports.default = routes;
27
30
  //# sourceMappingURL=PageRoute.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PageRoute.js","sourceRoot":"","sources":["../../../../../libs/node/src/routes/PageRoute.ts"],"names":[],"mappings":";;;AAAA,8DAA8B;AAC9B,8DAA8D;AAC9D,OAAO,CAAC,mCAAmC,CAAC,CAAC,iBAAO,CAAC,CAAC;AAGtD,yEAAyC;AACzC,kFAA4D;AAC5D,sFAAgE;AAEhE,MAAM,MAAM,GAAG,iBAAO,CAAC,MAAM,EAAa,CAAC;AAC3C,MAAM,CAAC,GAAG,CAAC,iBAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AAE3B,gBAAgB;AAChB,MAAM;KACH,IAAI,CAAC,OAAO,EAAE,IAAA,kBAAQ,EAAC,cAAc,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC;KACrE,UAAU,CAAC,aAAa,CAAC,CAAC;AAC7B,gBAAgB;AAChB,MAAM;KACH,IAAI,CAAC,GAAG,EAAE,IAAA,kBAAQ,EAAC,cAAc,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC,UAAU,CAAC;KACrE,UAAU,CAAC,aAAa,CAAC,CAAC;AAC7B,gBAAgB;AAChB,MAAM;KACH,GAAG,CAAC,MAAM,EAAE,IAAA,kBAAQ,EAAC,cAAc,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC,UAAU,CAAC;KACvE,UAAU,CAAC,aAAa,CAAC,CAAC;AAC7B,gBAAgB;AAChB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAE3E,kBAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"PageRoute.js","sourceRoot":"","sources":["../../../../../libs/node/src/routes/PageRoute.ts"],"names":[],"mappings":";;;AAAA,8DAA8B;AAC9B,8DAA8D;AAC9D,OAAO,CAAC,mCAAmC,CAAC,CAAC,iBAAO,CAAC,CAAC;AAGtD,yEAAyC;AACzC,kFAA4D;AAC5D,sFAAgE;AAEhE,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,IAAI,EAAE,CAAC;AAC5E,MAAM,MAAM,GAAG,iBAAO,CAAC,MAAM,EAAa,CAAC;AAC3C,MAAM,CAAC,GAAG,CAAC,iBAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AAE3B,gBAAgB;AAChB,MAAM;KACH,IAAI,CAAC,OAAO,EAAE,IAAA,kBAAQ,EAAC,cAAc,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC;KACrE,UAAU,CAAC,GAAG,gBAAgB,aAAa,CAAC,CAAC;AAChD,gBAAgB;AAChB,MAAM;KACH,IAAI,CAAC,GAAG,EAAE,IAAA,kBAAQ,EAAC,cAAc,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC,UAAU,CAAC;KACrE,UAAU,CAAC,GAAG,gBAAgB,aAAa,CAAC,CAAC;AAChD,gBAAgB;AAChB,MAAM;KACH,GAAG,CAAC,MAAM,EAAE,IAAA,kBAAQ,EAAC,cAAc,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC,UAAU,CAAC;KACvE,UAAU,CAAC,GAAG,gBAAgB,aAAa,CAAC,CAAC;AAChD,gBAAgB;AAChB,MAAM;KACH,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC;KACzC,UAAU,CAAC,GAAG,gBAAgB,aAAa,CAAC,CAAC;AAEhD,kBAAe,MAAM,CAAC"}
@@ -7,22 +7,25 @@ require('express-list-endpoints-descriptor')(express_1.default);
7
7
  const validate_1 = tslib_1.__importDefault(require("../utils/validate"));
8
8
  const tileValidation = tslib_1.__importStar(require("../utils/validations/tile"));
9
9
  const tileController = tslib_1.__importStar(require("../controllers/TileController"));
10
+ const descriptorPrefix = process.env['PAGECREATOR_DESCRIPTOR_PREFIX'] || '';
10
11
  const routes = express_1.default.Router();
11
12
  routes.use(express_1.default.json());
12
13
  // Tile Routes
13
14
  // Get all tiles
14
15
  routes
15
16
  .get(`/:widgetId`, (0, validate_1.default)(tileValidation.list), tileController.getTiles)
16
- .descriptor('tile.getAll');
17
+ .descriptor(`${descriptorPrefix}tile.getAll`);
17
18
  // Create a tile
18
19
  routes
19
20
  .post(`/`, (0, validate_1.default)(tileValidation.create), tileController.createTile)
20
- .descriptor('tile.create');
21
+ .descriptor(`${descriptorPrefix}tile.create`);
21
22
  // Update a tile
22
23
  routes
23
24
  .put(`/:id`, (0, validate_1.default)(tileValidation.update), tileController.updateTile)
24
- .descriptor('tile.update');
25
+ .descriptor(`${descriptorPrefix}tile.update`);
25
26
  // Delete a tile
26
- routes.delete(`/:id`, tileController.deleteTile).descriptor('tile.delete');
27
+ routes
28
+ .delete(`/:id`, tileController.deleteTile)
29
+ .descriptor(`${descriptorPrefix}tile.delete`);
27
30
  exports.default = routes;
28
31
  //# sourceMappingURL=TileRoute.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TileRoute.js","sourceRoot":"","sources":["../../../../../libs/node/src/routes/TileRoute.ts"],"names":[],"mappings":";;;AAAA,8DAA8B;AAC9B,8DAA8D;AAC9D,OAAO,CAAC,mCAAmC,CAAC,CAAC,iBAAO,CAAC,CAAC;AAGtD,yEAAyC;AACzC,kFAA4D;AAC5D,sFAAgE;AAEhE,MAAM,MAAM,GAAG,iBAAO,CAAC,MAAM,EAAa,CAAC;AAC3C,MAAM,CAAC,GAAG,CAAC,iBAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AAE3B,cAAc;AACd,gBAAgB;AAChB,MAAM;KACH,GAAG,CAAC,YAAY,EAAE,IAAA,kBAAQ,EAAC,cAAc,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC;KACzE,UAAU,CAAC,aAAa,CAAC,CAAC;AAC7B,gBAAgB;AAChB,MAAM;KACH,IAAI,CAAC,GAAG,EAAE,IAAA,kBAAQ,EAAC,cAAc,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC,UAAU,CAAC;KACrE,UAAU,CAAC,aAAa,CAAC,CAAC;AAC7B,gBAAgB;AAChB,MAAM;KACH,GAAG,CAAC,MAAM,EAAE,IAAA,kBAAQ,EAAC,cAAc,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC,UAAU,CAAC;KACvE,UAAU,CAAC,aAAa,CAAC,CAAC;AAC7B,gBAAgB;AAChB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAE3E,kBAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"TileRoute.js","sourceRoot":"","sources":["../../../../../libs/node/src/routes/TileRoute.ts"],"names":[],"mappings":";;;AAAA,8DAA8B;AAC9B,8DAA8D;AAC9D,OAAO,CAAC,mCAAmC,CAAC,CAAC,iBAAO,CAAC,CAAC;AAGtD,yEAAyC;AACzC,kFAA4D;AAC5D,sFAAgE;AAEhE,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,IAAI,EAAE,CAAC;AAC5E,MAAM,MAAM,GAAG,iBAAO,CAAC,MAAM,EAAa,CAAC;AAC3C,MAAM,CAAC,GAAG,CAAC,iBAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AAE3B,cAAc;AACd,gBAAgB;AAChB,MAAM;KACH,GAAG,CAAC,YAAY,EAAE,IAAA,kBAAQ,EAAC,cAAc,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC;KACzE,UAAU,CAAC,GAAG,gBAAgB,aAAa,CAAC,CAAC;AAChD,gBAAgB;AAChB,MAAM;KACH,IAAI,CAAC,GAAG,EAAE,IAAA,kBAAQ,EAAC,cAAc,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC,UAAU,CAAC;KACrE,UAAU,CAAC,GAAG,gBAAgB,aAAa,CAAC,CAAC;AAChD,gBAAgB;AAChB,MAAM;KACH,GAAG,CAAC,MAAM,EAAE,IAAA,kBAAQ,EAAC,cAAc,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC,UAAU,CAAC;KACvE,UAAU,CAAC,GAAG,gBAAgB,aAAa,CAAC,CAAC;AAChD,gBAAgB;AAChB,MAAM;KACH,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC;KACzC,UAAU,CAAC,GAAG,gBAAgB,aAAa,CAAC,CAAC;AAEhD,kBAAe,MAAM,CAAC"}
@@ -7,15 +7,16 @@ require('express-list-endpoints-descriptor')(express_1.default);
7
7
  const validate_1 = tslib_1.__importDefault(require("../utils/validate"));
8
8
  const userValidation = tslib_1.__importStar(require("../utils/validations/user"));
9
9
  const userController = tslib_1.__importStar(require("../controllers/UserController"));
10
+ const descriptorPrefix = process.env['PAGECREATOR_DESCRIPTOR_PREFIX'] || '';
10
11
  const routes = express_1.default.Router();
11
12
  routes.use(express_1.default.json());
12
13
  // Tile Routes
13
14
  // Get Widget Data
14
15
  routes
15
16
  .post(`/widget-data`, (0, validate_1.default)(userValidation.getWidgetData), userController.getWidgetData)
16
- .descriptor('user.getWidgetData');
17
+ .descriptor(`${descriptorPrefix}user.getWidgetData`);
17
18
  routes
18
19
  .post('/page-data', (0, validate_1.default)(userValidation.getPageData), userController.getPageData)
19
- .descriptor('user.getPageData');
20
+ .descriptor(`${descriptorPrefix}user.getPageData`);
20
21
  exports.default = routes;
21
22
  //# sourceMappingURL=UserRoute.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"UserRoute.js","sourceRoot":"","sources":["../../../../../libs/node/src/routes/UserRoute.ts"],"names":[],"mappings":";;;AAAA,8DAA8B;AAC9B,8DAA8D;AAC9D,OAAO,CAAC,mCAAmC,CAAC,CAAC,iBAAO,CAAC,CAAC;AAGtD,yEAAyC;AACzC,kFAA4D;AAC5D,sFAAgE;AAEhE,MAAM,MAAM,GAAG,iBAAO,CAAC,MAAM,EAAa,CAAC;AAC3C,MAAM,CAAC,GAAG,CAAC,iBAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AAE3B,cAAc;AACd,kBAAkB;AAClB,MAAM;KACH,IAAI,CACH,cAAc,EACd,IAAA,kBAAQ,EAAC,cAAc,CAAC,aAAa,CAAC,EACtC,cAAc,CAAC,aAAa,CAC7B;KACA,UAAU,CAAC,oBAAoB,CAAC,CAAC;AAEpC,MAAM;KACH,IAAI,CACH,YAAY,EACZ,IAAA,kBAAQ,EAAC,cAAc,CAAC,WAAW,CAAC,EACpC,cAAc,CAAC,WAAW,CAC3B;KACA,UAAU,CAAC,kBAAkB,CAAC,CAAC;AAElC,kBAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"UserRoute.js","sourceRoot":"","sources":["../../../../../libs/node/src/routes/UserRoute.ts"],"names":[],"mappings":";;;AAAA,8DAA8B;AAC9B,8DAA8D;AAC9D,OAAO,CAAC,mCAAmC,CAAC,CAAC,iBAAO,CAAC,CAAC;AAGtD,yEAAyC;AACzC,kFAA4D;AAC5D,sFAAgE;AAEhE,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,IAAI,EAAE,CAAC;AAC5E,MAAM,MAAM,GAAG,iBAAO,CAAC,MAAM,EAAa,CAAC;AAC3C,MAAM,CAAC,GAAG,CAAC,iBAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AAE3B,cAAc;AACd,kBAAkB;AAClB,MAAM;KACH,IAAI,CACH,cAAc,EACd,IAAA,kBAAQ,EAAC,cAAc,CAAC,aAAa,CAAC,EACtC,cAAc,CAAC,aAAa,CAC7B;KACA,UAAU,CAAC,GAAG,gBAAgB,oBAAoB,CAAC,CAAC;AAEvD,MAAM;KACH,IAAI,CACH,YAAY,EACZ,IAAA,kBAAQ,EAAC,cAAc,CAAC,WAAW,CAAC,EACpC,cAAc,CAAC,WAAW,CAC3B;KACA,UAAU,CAAC,GAAG,gBAAgB,kBAAkB,CAAC,CAAC;AAErD,kBAAe,MAAM,CAAC"}
@@ -7,40 +7,41 @@ require('express-list-endpoints-descriptor')(express_1.default);
7
7
  const validate_1 = tslib_1.__importDefault(require("../utils/validate"));
8
8
  const widgetValidation = tslib_1.__importStar(require("../utils/validations/widget"));
9
9
  const widgetController = tslib_1.__importStar(require("../controllers/WidgetController"));
10
+ const descriptorPrefix = process.env['PAGECREATOR_DESCRIPTOR_PREFIX'] || '';
10
11
  const routes = express_1.default.Router();
11
12
  routes.use(express_1.default.json());
12
13
  // Widget Routes
13
14
  // Get widget types
14
15
  routes
15
16
  .get('/widget-types', widgetController.getWidgetTypes)
16
- .descriptor('widget.getWidgetTypes');
17
+ .descriptor(`${descriptorPrefix}widget.getWidgetTypes`);
17
18
  // Get widget selection types
18
19
  routes
19
20
  .get('/selection-types', widgetController.getSelectionTypes)
20
- .descriptor('widget.getSelectionTypes');
21
+ .descriptor(`${descriptorPrefix}widget.getSelectionTypes`);
21
22
  // Get all widgets
22
23
  routes
23
24
  .post(`/list`, (0, validate_1.default)(widgetValidation.list), widgetController.getWidgets)
24
- .descriptor('widget.getAll');
25
+ .descriptor(`${descriptorPrefix}widget.getAll`);
25
26
  // Create a widget
26
27
  routes
27
28
  .post(`/`, (0, validate_1.default)(widgetValidation.create), widgetController.createWidget)
28
- .descriptor('widget.create');
29
+ .descriptor(`${descriptorPrefix}widget.create`);
29
30
  // Update a widget
30
31
  routes
31
32
  .put(`/:id`, (0, validate_1.default)(widgetValidation.update), widgetController.updateWidget)
32
- .descriptor('widget.update');
33
+ .descriptor(`${descriptorPrefix}widget.update`);
33
34
  // Partial Update a widget
34
35
  routes
35
36
  .patch(`/:id`, (0, validate_1.default)(widgetValidation.partialUpdate), widgetController.partialUpdateWidget)
36
- .descriptor('widget.partialUpdate');
37
+ .descriptor(`${descriptorPrefix}widget.partialUpdate`);
37
38
  // Delete a widget
38
39
  routes
39
40
  .delete(`/:id`, widgetController.deleteWidget)
40
- .descriptor('widget.delete');
41
+ .descriptor(`${descriptorPrefix}widget.delete`);
41
42
  // Get dynamic collection data
42
43
  routes
43
44
  .post('/collection-data', (0, validate_1.default)(widgetValidation.getCollectionData), widgetController.getCollectionData)
44
- .descriptor('widget.getCollectionData');
45
+ .descriptor(`${descriptorPrefix}widget.getCollectionData`);
45
46
  exports.default = routes;
46
47
  //# sourceMappingURL=WidgetRoute.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetRoute.js","sourceRoot":"","sources":["../../../../../libs/node/src/routes/WidgetRoute.ts"],"names":[],"mappings":";;;AAAA,8DAA8B;AAC9B,8DAA8D;AAC9D,OAAO,CAAC,mCAAmC,CAAC,CAAC,iBAAO,CAAC,CAAC;AAGtD,yEAAyC;AACzC,sFAAgE;AAChE,0FAAoE;AAEpE,MAAM,MAAM,GAAG,iBAAO,CAAC,MAAM,EAAa,CAAC;AAC3C,MAAM,CAAC,GAAG,CAAC,iBAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AAE3B,gBAAgB;AAChB,mBAAmB;AACnB,MAAM;KACH,GAAG,CAAC,eAAe,EAAE,gBAAgB,CAAC,cAAc,CAAC;KACrD,UAAU,CAAC,uBAAuB,CAAC,CAAC;AACvC,6BAA6B;AAC7B,MAAM;KACH,GAAG,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,iBAAiB,CAAC;KAC3D,UAAU,CAAC,0BAA0B,CAAC,CAAC;AAC1C,kBAAkB;AAClB,MAAM;KACH,IAAI,CAAC,OAAO,EAAE,IAAA,kBAAQ,EAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC,UAAU,CAAC;KAC3E,UAAU,CAAC,eAAe,CAAC,CAAC;AAC/B,kBAAkB;AAClB,MAAM;KACH,IAAI,CAAC,GAAG,EAAE,IAAA,kBAAQ,EAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC,YAAY,CAAC;KAC3E,UAAU,CAAC,eAAe,CAAC,CAAC;AAC/B,kBAAkB;AAClB,MAAM;KACH,GAAG,CAAC,MAAM,EAAE,IAAA,kBAAQ,EAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC,YAAY,CAAC;KAC7E,UAAU,CAAC,eAAe,CAAC,CAAC;AAC/B,0BAA0B;AAC1B,MAAM;KACH,KAAK,CACJ,MAAM,EACN,IAAA,kBAAQ,EAAC,gBAAgB,CAAC,aAAa,CAAC,EACxC,gBAAgB,CAAC,mBAAmB,CACrC;KACA,UAAU,CAAC,sBAAsB,CAAC,CAAC;AACtC,kBAAkB;AAClB,MAAM;KACH,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,YAAY,CAAC;KAC7C,UAAU,CAAC,eAAe,CAAC,CAAC;AAC/B,8BAA8B;AAC9B,MAAM;KACH,IAAI,CACH,kBAAkB,EAClB,IAAA,kBAAQ,EAAC,gBAAgB,CAAC,iBAAiB,CAAC,EAC5C,gBAAgB,CAAC,iBAAiB,CACnC;KACA,UAAU,CAAC,0BAA0B,CAAC,CAAC;AAE1C,kBAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"WidgetRoute.js","sourceRoot":"","sources":["../../../../../libs/node/src/routes/WidgetRoute.ts"],"names":[],"mappings":";;;AAAA,8DAA8B;AAC9B,8DAA8D;AAC9D,OAAO,CAAC,mCAAmC,CAAC,CAAC,iBAAO,CAAC,CAAC;AAGtD,yEAAyC;AACzC,sFAAgE;AAChE,0FAAoE;AAEpE,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,IAAI,EAAE,CAAC;AAC5E,MAAM,MAAM,GAAG,iBAAO,CAAC,MAAM,EAAa,CAAC;AAC3C,MAAM,CAAC,GAAG,CAAC,iBAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AAE3B,gBAAgB;AAChB,mBAAmB;AACnB,MAAM;KACH,GAAG,CAAC,eAAe,EAAE,gBAAgB,CAAC,cAAc,CAAC;KACrD,UAAU,CAAC,GAAG,gBAAgB,uBAAuB,CAAC,CAAC;AAC1D,6BAA6B;AAC7B,MAAM;KACH,GAAG,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,iBAAiB,CAAC;KAC3D,UAAU,CAAC,GAAG,gBAAgB,0BAA0B,CAAC,CAAC;AAC7D,kBAAkB;AAClB,MAAM;KACH,IAAI,CAAC,OAAO,EAAE,IAAA,kBAAQ,EAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC,UAAU,CAAC;KAC3E,UAAU,CAAC,GAAG,gBAAgB,eAAe,CAAC,CAAC;AAClD,kBAAkB;AAClB,MAAM;KACH,IAAI,CAAC,GAAG,EAAE,IAAA,kBAAQ,EAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC,YAAY,CAAC;KAC3E,UAAU,CAAC,GAAG,gBAAgB,eAAe,CAAC,CAAC;AAClD,kBAAkB;AAClB,MAAM;KACH,GAAG,CAAC,MAAM,EAAE,IAAA,kBAAQ,EAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC,YAAY,CAAC;KAC7E,UAAU,CAAC,GAAG,gBAAgB,eAAe,CAAC,CAAC;AAClD,0BAA0B;AAC1B,MAAM;KACH,KAAK,CACJ,MAAM,EACN,IAAA,kBAAQ,EAAC,gBAAgB,CAAC,aAAa,CAAC,EACxC,gBAAgB,CAAC,mBAAmB,CACrC;KACA,UAAU,CAAC,GAAG,gBAAgB,sBAAsB,CAAC,CAAC;AACzD,kBAAkB;AAClB,MAAM;KACH,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,YAAY,CAAC;KAC7C,UAAU,CAAC,GAAG,gBAAgB,eAAe,CAAC,CAAC;AAClD,8BAA8B;AAC9B,MAAM;KACH,IAAI,CACH,kBAAkB,EAClB,IAAA,kBAAQ,EAAC,gBAAgB,CAAC,iBAAiB,CAAC,EAC5C,gBAAgB,CAAC,iBAAiB,CACnC;KACA,UAAU,CAAC,GAAG,gBAAgB,0BAA0B,CAAC,CAAC;AAE7D,kBAAe,MAAM,CAAC"}
@@ -44,6 +44,9 @@ export declare type CollectionItem = {
44
44
  [key: string]: string | number | boolean;
45
45
  };
46
46
  searchColumns: string[];
47
+ match?: ObjectType;
48
+ project?: ObjectType;
49
+ lookup?: ObjectType;
47
50
  };
48
51
  export interface IConfig {
49
52
  logger: any;
@@ -64,3 +67,12 @@ export interface IDefaultValidations {
64
67
  deletedBy: string;
65
68
  deletedAt: string;
66
69
  }
70
+ export interface IWidgetDataSchema {
71
+ _id: string;
72
+ code: string;
73
+ collectionName: string;
74
+ collectionItems: string[];
75
+ }
76
+ export declare type IWidgetData = {
77
+ [key: string]: IWidgetDataSchema;
78
+ };
@@ -1,2 +1,7 @@
1
1
  import { IConfig } from '../types';
2
2
  export declare const defaults: IConfig;
3
+ export declare const commonExcludedFields: {
4
+ __v: number;
5
+ isDeleted: number;
6
+ deletedAt: number;
7
+ };
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.defaults = void 0;
3
+ exports.commonExcludedFields = exports.defaults = void 0;
4
4
  const constants_1 = require("../constants");
5
5
  exports.defaults = {
6
6
  logger: console,
@@ -20,4 +20,9 @@ exports.defaults = {
20
20
  },
21
21
  collections: [],
22
22
  };
23
+ exports.commonExcludedFields = {
24
+ __v: 0,
25
+ isDeleted: 0,
26
+ deletedAt: 0,
27
+ };
23
28
  //# sourceMappingURL=defaults.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../../../../libs/node/src/utils/defaults.ts"],"names":[],"mappings":";;;AAEA,4CAA2E;AAE9D,QAAA,QAAQ,GAAY;IAC/B,MAAM,EAAE,OAAc;IACtB,UAAU,EACR,CAAC,EAAO,EAAE,KAAK,GAAG,EAAE,EAAE,EAAE,CACxB,CAAC,GAAa,EAAE,GAAc,EAAE,IAAkB,EAAE,EAAE;QACpD,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YAChD,IAAI,OAAO,GAAI,GAAa,CAAC,OAAO,CAAC;YACrC,IAAI,OAAO,CAAC,KAAK,CAAC,kBAAM,CAAC,oBAAoB,CAAC,EAAE;gBAC9C,OAAO,GAAG,GAAG,KAAK,2BAA2B,CAAC;aAC/C;YACD,kCAAkC;YAClC,GAAG,CAAC,MAAM,CAAC,+BAAmB,CAAC,CAAC,IAAI,CAAC;gBACnC,IAAI,EAAE,0BAAc,CAAC,KAAK;gBAC1B,OAAO;gBACP,IAAI,EAAE,SAAS;aAChB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IACH,WAAW,EAAE,EAAsB;CACpC,CAAC"}
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../../../../libs/node/src/utils/defaults.ts"],"names":[],"mappings":";;;AAEA,4CAA2E;AAE9D,QAAA,QAAQ,GAAY;IAC/B,MAAM,EAAE,OAAc;IACtB,UAAU,EACR,CAAC,EAAO,EAAE,KAAK,GAAG,EAAE,EAAE,EAAE,CACxB,CAAC,GAAa,EAAE,GAAc,EAAE,IAAkB,EAAE,EAAE;QACpD,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YAChD,IAAI,OAAO,GAAI,GAAa,CAAC,OAAO,CAAC;YACrC,IAAI,OAAO,CAAC,KAAK,CAAC,kBAAM,CAAC,oBAAoB,CAAC,EAAE;gBAC9C,OAAO,GAAG,GAAG,KAAK,2BAA2B,CAAC;aAC/C;YACD,kCAAkC;YAClC,GAAG,CAAC,MAAM,CAAC,+BAAmB,CAAC,CAAC,IAAI,CAAC;gBACnC,IAAI,EAAE,0BAAc,CAAC,KAAK;gBAC1B,OAAO;gBACP,IAAI,EAAE,SAAS;aAChB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IACH,WAAW,EAAE,EAAsB;CACpC,CAAC;AAEW,QAAA,oBAAoB,GAAG;IAClC,GAAG,EAAE,CAAC;IACN,SAAS,EAAE,CAAC;IACZ,SAAS,EAAE,CAAC;CACb,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { IWidgetSchema } from '../types';
2
+ export declare function appendCollectionData(widgetData: IWidgetSchema[]): Promise<(IWidgetSchema | {
3
+ collectionItems: any;
4
+ name: string;
5
+ code: string;
6
+ autoPlay: boolean;
7
+ isActive: boolean;
8
+ selectionTitle: string;
9
+ webPerRow: number;
10
+ mobilePerRow: number;
11
+ tabletPerRow: number;
12
+ widgetType: import("../types").WidgetType;
13
+ selectionType: import("../types").SelectionTypes;
14
+ collectionName: string;
15
+ _id?: any;
16
+ __v?: any;
17
+ $locals: Record<string, unknown>;
18
+ $op: "save" | "validate" | "remove" | null;
19
+ $where: Record<string, unknown>;
20
+ baseModelName?: string | undefined;
21
+ collection: import("mongoose").Collection<import("bson").Document>;
22
+ db: import("mongoose").Connection;
23
+ errors?: import("mongoose").Error.ValidationError | undefined;
24
+ id?: any;
25
+ isNew: boolean;
26
+ modelName: string;
27
+ schema: import("mongoose").Schema<any, import("mongoose").Model<any, any, any, any, any>, {}, {}, {}, {}, "type", {
28
+ [x: string]: any;
29
+ }>;
30
+ })[]>;
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.appendCollectionData = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const models_1 = require("../models");
6
+ const defaults_1 = require("./defaults");
7
+ function appendCollectionData(widgetData) {
8
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
9
+ // reduce widget data to optimize query
10
+ const newData = widgetData.reduce((acc, widget) => {
11
+ if (widget.collectionName) {
12
+ acc[widget.code] = {
13
+ _id: widget._id,
14
+ code: widget.code,
15
+ collectionName: widget.collectionName,
16
+ collectionItems: widget.collectionItems,
17
+ };
18
+ }
19
+ return acc;
20
+ }, {});
21
+ if (Object.keys(newData).length > 0) {
22
+ const aggregationQuery = [
23
+ {
24
+ $match: {
25
+ _id: {
26
+ $in: Object.values(newData).map((item) => item._id),
27
+ },
28
+ },
29
+ },
30
+ {
31
+ // Get only the fields that are not excluded
32
+ $project: {
33
+ _id: 1,
34
+ code: 1,
35
+ },
36
+ },
37
+ ];
38
+ let collectionConfig, aggregationQueryPiplelines;
39
+ Object.keys(newData).forEach((key) => {
40
+ collectionConfig = defaults_1.defaults.collections.find((c) => c.collectionName === newData[key].collectionName);
41
+ // Build piplelines with config
42
+ aggregationQueryPiplelines = [
43
+ {
44
+ $match: Object.assign({ _id: {
45
+ $in: newData[key].collectionItems,
46
+ } }, ((collectionConfig === null || collectionConfig === void 0 ? void 0 : collectionConfig.match) || {})),
47
+ },
48
+ {
49
+ $project: Object.assign({}, defaults_1.commonExcludedFields),
50
+ },
51
+ ];
52
+ // add project config if it exists
53
+ if (collectionConfig === null || collectionConfig === void 0 ? void 0 : collectionConfig.project)
54
+ aggregationQueryPiplelines.push({
55
+ $project: collectionConfig === null || collectionConfig === void 0 ? void 0 : collectionConfig.project,
56
+ });
57
+ // add lookup config if it exists
58
+ if (collectionConfig === null || collectionConfig === void 0 ? void 0 : collectionConfig.lookup)
59
+ aggregationQueryPiplelines.push({
60
+ $lookup: collectionConfig === null || collectionConfig === void 0 ? void 0 : collectionConfig.lookup,
61
+ });
62
+ // Build Aggregation Query
63
+ aggregationQuery.push({
64
+ $lookup: {
65
+ from: newData[key].collectionName,
66
+ pipeline: aggregationQueryPiplelines,
67
+ as: newData[key].code,
68
+ },
69
+ });
70
+ });
71
+ // getting collection data by populating widget
72
+ let aggregationData = yield models_1.Widget.aggregate(aggregationQuery);
73
+ aggregationData = aggregationData.reduce((acc, aggregation) => {
74
+ acc[aggregation.code] = aggregation[aggregation.code];
75
+ return acc;
76
+ }, {});
77
+ // adding collection data to widgets
78
+ return widgetData.map((widget) => {
79
+ if (aggregationData[widget.code]) {
80
+ return Object.assign(Object.assign({}, widget), { collectionItems: aggregationData[widget.code] });
81
+ }
82
+ return widget;
83
+ });
84
+ }
85
+ // returning widget data as it is if they do not have dynamic collection
86
+ return widgetData;
87
+ });
88
+ }
89
+ exports.appendCollectionData = appendCollectionData;
90
+ //# sourceMappingURL=helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helper.js","sourceRoot":"","sources":["../../../../../libs/node/src/utils/helper.ts"],"names":[],"mappings":"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"}