@knovator/pagecreator-node 1.2.0 → 1.2.2

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.
Files changed (128) hide show
  1. package/package.json +4 -2
  2. package/src/constants/index.d.ts +20 -0
  3. package/src/constants/index.js +34 -0
  4. package/src/constants/index.js.map +1 -0
  5. package/src/controllers/PageController.d.ts +4 -0
  6. package/src/controllers/PageController.js +84 -0
  7. package/src/controllers/PageController.js.map +1 -0
  8. package/src/controllers/TabController.d.ts +4 -0
  9. package/src/controllers/TabController.js +46 -0
  10. package/src/controllers/TabController.js.map +1 -0
  11. package/src/controllers/UserController.d.ts +2 -0
  12. package/src/controllers/UserController.js +65 -0
  13. package/src/controllers/UserController.js.map +1 -0
  14. package/src/controllers/WidgetController.d.ts +10 -0
  15. package/src/controllers/WidgetController.js +329 -0
  16. package/src/controllers/WidgetController.js.map +1 -0
  17. package/src/index.d.ts +8 -0
  18. package/src/index.js +48 -0
  19. package/src/index.js.map +1 -0
  20. package/src/models/Item.d.ts +30 -0
  21. package/src/models/Item.js +50 -0
  22. package/src/models/Item.js.map +1 -0
  23. package/src/models/Page.d.ts +30 -0
  24. package/src/models/Page.js +23 -0
  25. package/src/models/Page.js.map +1 -0
  26. package/src/models/SrcSet.d.ts +30 -0
  27. package/src/models/SrcSet.js +17 -0
  28. package/src/models/SrcSet.js.map +1 -0
  29. package/src/models/Tab.d.ts +30 -0
  30. package/src/models/Tab.js +28 -0
  31. package/src/models/Tab.js.map +1 -0
  32. package/src/models/Widget.d.ts +30 -0
  33. package/src/models/Widget.js +63 -0
  34. package/src/models/Widget.js.map +1 -0
  35. package/src/models/{index.ts → index.d.ts} +1 -13
  36. package/src/models/index.js +19 -0
  37. package/src/models/index.js.map +1 -0
  38. package/src/plugins/softDelete.d.ts +7 -0
  39. package/src/plugins/softDelete.js +64 -0
  40. package/src/plugins/softDelete.js.map +1 -0
  41. package/src/routes/PageRoute.d.ts +3 -0
  42. package/src/routes/PageRoute.js +30 -0
  43. package/src/routes/PageRoute.js.map +1 -0
  44. package/src/routes/UserRoute.d.ts +3 -0
  45. package/src/routes/UserRoute.js +23 -0
  46. package/src/routes/UserRoute.js.map +1 -0
  47. package/src/routes/WidgetRoute.d.ts +3 -0
  48. package/src/routes/WidgetRoute.js +68 -0
  49. package/src/routes/WidgetRoute.js.map +1 -0
  50. package/src/services/dataService.d.ts +9 -0
  51. package/src/services/dataService.js +403 -0
  52. package/src/services/dataService.js.map +1 -0
  53. package/src/services/dbService.d.ts +16 -0
  54. package/src/services/dbService.js +88 -0
  55. package/src/services/dbService.js.map +1 -0
  56. package/src/types/{IRequest.ts → IRequest.d.ts} +3 -4
  57. package/src/types/IRequest.js +3 -0
  58. package/src/types/IRequest.js.map +1 -0
  59. package/src/types/{IResponse.ts → IResponse.d.ts} +3 -4
  60. package/src/types/IResponse.js +3 -0
  61. package/src/types/IResponse.js.map +1 -0
  62. package/src/types/{Router.ts → Router.d.ts} +1 -2
  63. package/src/types/Router.js +3 -0
  64. package/src/types/Router.js.map +1 -0
  65. package/src/types/common.d.ts +142 -0
  66. package/src/types/common.js +3 -0
  67. package/src/types/common.js.map +1 -0
  68. package/src/types/enums.d.ts +14 -0
  69. package/src/types/enums.js +21 -0
  70. package/src/types/enums.js.map +1 -0
  71. package/src/types/index.js +9 -0
  72. package/src/types/index.js.map +1 -0
  73. package/src/utils/defaults.d.ts +7 -0
  74. package/src/utils/defaults.js +41 -0
  75. package/src/utils/defaults.js.map +1 -0
  76. package/src/utils/helper.d.ts +7 -0
  77. package/src/utils/helper.js +225 -0
  78. package/src/utils/helper.js.map +1 -0
  79. package/src/utils/redis.d.ts +3 -0
  80. package/src/utils/redis.js +59 -0
  81. package/src/utils/redis.js.map +1 -0
  82. package/src/utils/responseHandlers.d.ts +6 -0
  83. package/src/utils/responseHandlers.js +57 -0
  84. package/src/utils/responseHandlers.js.map +1 -0
  85. package/src/utils/validate.d.ts +4 -0
  86. package/src/utils/validate.js +24 -0
  87. package/src/utils/validate.js.map +1 -0
  88. package/src/utils/validations/page.d.ts +7 -0
  89. package/src/utils/validations/page.js +51 -0
  90. package/src/utils/validations/page.js.map +1 -0
  91. package/src/utils/validations/tab.d.ts +6 -0
  92. package/src/utils/validations/tab.js +26 -0
  93. package/src/utils/validations/tab.js.map +1 -0
  94. package/src/utils/validations/user.d.ts +3 -0
  95. package/src/utils/validations/user.js +13 -0
  96. package/src/utils/validations/user.js.map +1 -0
  97. package/src/utils/validations/widget.d.ts +9 -0
  98. package/src/utils/validations/widget.js +153 -0
  99. package/src/utils/validations/widget.js.map +1 -0
  100. package/src/constants/index.ts +0 -30
  101. package/src/controllers/PageController.ts +0 -88
  102. package/src/controllers/TabController.ts +0 -47
  103. package/src/controllers/UserController.ts +0 -69
  104. package/src/controllers/WidgetController.ts +0 -420
  105. package/src/index.ts +0 -59
  106. package/src/models/Item.ts +0 -53
  107. package/src/models/Page.ts +0 -22
  108. package/src/models/SrcSet.ts +0 -16
  109. package/src/models/Tab.ts +0 -28
  110. package/src/models/Widget.ts +0 -65
  111. package/src/plugins/softDelete.ts +0 -84
  112. package/src/routes/PageRoute.ts +0 -30
  113. package/src/routes/UserRoute.ts +0 -32
  114. package/src/routes/WidgetRoute.ts +0 -77
  115. package/src/services/dataService.ts +0 -475
  116. package/src/services/dbService.ts +0 -102
  117. package/src/types/common.ts +0 -172
  118. package/src/types/enums.ts +0 -16
  119. package/src/utils/defaults.ts +0 -41
  120. package/src/utils/helper.ts +0 -285
  121. package/src/utils/redis.ts +0 -57
  122. package/src/utils/responseHandlers.ts +0 -60
  123. package/src/utils/validate.ts +0 -22
  124. package/src/utils/validations/page.ts +0 -52
  125. package/src/utils/validations/tab.ts +0 -26
  126. package/src/utils/validations/user.ts +0 -10
  127. package/src/utils/validations/widget.ts +0 -169
  128. /package/src/types/{index.ts → index.d.ts} +0 -0
@@ -1,420 +0,0 @@
1
- import { Models, Types } from 'mongoose';
2
- import {
3
- create,
4
- remove,
5
- update,
6
- list,
7
- bulkInsert,
8
- deleteAll,
9
- getOne,
10
- checkUnique,
11
- } from '../services/dbService';
12
- import { VALIDATION } from '../constants';
13
- import {
14
- successResponse,
15
- createdDocumentResponse,
16
- } from './../utils/responseHandlers';
17
-
18
- import { commonExcludedFields, defaults } from '../utils/defaults';
19
- import { formatCollectionItems, getCollectionModal } from '../utils/helper';
20
- import {
21
- CollectionItem,
22
- IRequest,
23
- IResponse,
24
- WidgetTypes,
25
- TypesType,
26
- ItemsType,
27
- } from '../types';
28
- import {
29
- updateRedisWidget,
30
- updateWidgetPagesData,
31
- } from '../services/dataService';
32
-
33
- const catchAsync = (fn: any) => {
34
- return defaults.catchAsync(fn, 'Widget');
35
- };
36
-
37
- const getModals = (req: IRequest) => defaults.getModals(req);
38
-
39
- const deleteItems = async (widgetId: string, models: Models) => {
40
- const { Item } = models;
41
- await deleteAll(Item, { widgetId: new Types.ObjectId(widgetId) });
42
- };
43
- const createItems = async (
44
- itemsData: any[],
45
- widgetId: string,
46
- models: Models
47
- ) => {
48
- const { Item, SrcSet } = models;
49
- itemsData = itemsData.map((item: any) => ({
50
- ...item,
51
- _id: new Types.ObjectId(),
52
- widgetId,
53
- }));
54
- const srcSetItems = itemsData.reduce((acc: any[], item: any) => {
55
- if (Array.isArray(item.srcset)) {
56
- acc.push(
57
- ...item.srcset.map((srcSetItem: any) => ({
58
- ...srcSetItem,
59
- itemId: item._id,
60
- }))
61
- );
62
- delete item.srcset;
63
- }
64
- return acc;
65
- }, []);
66
- await bulkInsert(Item, itemsData);
67
- await bulkInsert(SrcSet, srcSetItems);
68
- };
69
-
70
- export const createWidget = catchAsync(
71
- async (req: IRequest, res: IResponse) => {
72
- const models = getModals(req);
73
- const data = req.body;
74
- let items = [];
75
-
76
- await checkUnique({
77
- Modal: models['Widget'],
78
- uniqueField: 'code',
79
- value: data.code,
80
- errorMessage: VALIDATION.WIDGET_EXISTS
81
- });
82
-
83
- if ('items' in data) {
84
- items = JSON.parse(JSON.stringify(data.items));
85
- delete data.items;
86
- }
87
- const widget = await create(models['Widget'], data);
88
- if (items.length > 0) {
89
- await createItems(items, widget._id, models);
90
- }
91
- res.message = req?.i18n?.t('widget.create');
92
- return createdDocumentResponse(widget, res);
93
- }
94
- );
95
-
96
- export const updateWidget = catchAsync(
97
- async (req: IRequest, res: IResponse) => {
98
- const models = getModals(req);
99
- const data = req.body;
100
- const _id = req.params['id'];
101
- let items = [];
102
- if ('items' in data) {
103
- items = JSON.parse(JSON.stringify(data.items));
104
- delete data.items;
105
- }
106
- const updatedWidget = await update(models['Widget'], { _id }, data);
107
- if (items.length > 0 && updatedWidget) {
108
- await deleteItems(_id, models);
109
- await createItems(items, updatedWidget._id, models);
110
- }
111
- if (updatedWidget) {
112
- updateRedisWidget(updatedWidget.code, models);
113
- updateWidgetPagesData([updatedWidget.id], models);
114
- }
115
- res.message = req?.i18n?.t('widget.update');
116
- return successResponse(updatedWidget, res);
117
- }
118
- );
119
-
120
- export const deleteWidget = catchAsync(
121
- async (req: IRequest, res: IResponse) => {
122
- const models = getModals(req);
123
- await deleteItems(req.params['id'], models);
124
- const _id = new Types.ObjectId(req.params['id']);
125
- const deletedWidget = await remove(models['Widget'], { _id });
126
- if (deletedWidget) {
127
- updateRedisWidget(deletedWidget.code, models);
128
- updateWidgetPagesData([deletedWidget.id], models);
129
- }
130
- res.message = req?.i18n?.t('widget.delete');
131
- return successResponse(deletedWidget, res);
132
- }
133
- );
134
-
135
- export const getWidgets = catchAsync(async (req: IRequest, res: IResponse) => {
136
- const { Widget } = getModals(req);
137
- const search = req.body.search || '';
138
- const { collectionItems } = req.body;
139
- const { page, limit, sort } = req.body.options;
140
- const all =
141
- (typeof req.body.all !== 'undefined' && req.body.all === true) || false;
142
- const isActive =
143
- typeof req.body.isActive !== 'undefined'
144
- ? req.body.isActive || false
145
- : null;
146
- const customOptions = {
147
- pagination: !all,
148
- sort,
149
- select: 'name code isActive canDel',
150
- ...(page && limit ? { page, limit } : {}),
151
- };
152
- const orOptions: any = [];
153
- if (search) {
154
- orOptions.push({ name: { $regex: search, $options: 'i' } });
155
- orOptions.push({ code: { $regex: search, $options: 'i' } });
156
- } else {
157
- orOptions.push({});
158
- }
159
- if (Array.isArray(collectionItems) && collectionItems.length) {
160
- orOptions.push({ _id: { $in: collectionItems } });
161
- }
162
- const query = {
163
- isDeleted: false,
164
- isActive: { $in: isActive === null ? [true, false] : [isActive] },
165
- $or: orOptions,
166
- };
167
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
168
- // @ts-ignore
169
- const notifications = await list(Widget, query, customOptions);
170
- res.message = req?.i18n?.t('widget.getAll');
171
- return successResponse(notifications, res);
172
- });
173
-
174
- export const getSingleWidget = catchAsync(
175
- async (req: IRequest, res: IResponse) => {
176
- const { Widget, Item } = getModals(req);
177
- const _id = req.params['id'];
178
- const widget = await (
179
- await getOne(Widget, { _id, isDeleted: true })
180
- ).toJSON();
181
- widget['items'] = await Item.aggregate([
182
- {
183
- $match: {
184
- widgetId: new Types.ObjectId(_id),
185
- isDeleted: false,
186
- },
187
- },
188
- {
189
- $project: {
190
- ...commonExcludedFields,
191
- },
192
- },
193
- ...(defaults.languages && defaults.languages?.length > 0
194
- ? defaults.languages.reduce((arr: any[], lng) => {
195
- arr.push(
196
- {
197
- $lookup: {
198
- from: 'file',
199
- let: { imgsId: { $toObjectId: `$imgs.${lng.code}` } },
200
- as: `imgs.${lng.code}`,
201
- pipeline: [
202
- {
203
- $match: {
204
- $expr: {
205
- $eq: ['$_id', '$$imgsId'],
206
- },
207
- },
208
- },
209
- {
210
- $project: {
211
- ...commonExcludedFields,
212
- width: 0,
213
- module: 0,
214
- height: 0,
215
- },
216
- },
217
- ],
218
- },
219
- },
220
- {
221
- $unwind: {
222
- path: `$imgs.${lng.code}`,
223
- preserveNullAndEmptyArrays: true,
224
- },
225
- }
226
- );
227
- return arr;
228
- }, [])
229
- : [
230
- {
231
- $lookup: {
232
- from: 'file',
233
- let: { imgId: '$img' },
234
- as: 'img',
235
- pipeline: [
236
- {
237
- $match: {
238
- $expr: {
239
- $eq: ['$_id', '$$imgId'],
240
- },
241
- },
242
- },
243
- {
244
- $project: {
245
- ...commonExcludedFields,
246
- width: 0,
247
- module: 0,
248
- height: 0,
249
- },
250
- },
251
- ],
252
- },
253
- },
254
- {
255
- $unwind: {
256
- path: '$img',
257
- preserveNullAndEmptyArrays: true,
258
- },
259
- },
260
- ]),
261
- {
262
- $lookup: {
263
- from: 'srcsets',
264
- let: { item: '$_id' },
265
- as: 'srcset',
266
- pipeline: [
267
- {
268
- $match: {
269
- $expr: {
270
- $eq: ['$itemId', '$$item'],
271
- },
272
- },
273
- },
274
- {
275
- $project: {
276
- ...commonExcludedFields,
277
- _id: 0,
278
- itemId: 0,
279
- },
280
- },
281
- ],
282
- },
283
- },
284
- ]);
285
- res.message = req?.i18n?.t('widget.getOne');
286
- return successResponse(widget, res);
287
- }
288
- );
289
-
290
- export const partialUpdateWidget = catchAsync(
291
- async (req: IRequest, res: IResponse) => {
292
- const models = getModals(req);
293
- const data = req.body;
294
- const _id = req.params['id'];
295
- const updatedWidget = await update(models['Widget'], { _id }, data);
296
- if (updatedWidget) {
297
- updateRedisWidget(updatedWidget.code, models);
298
- updateWidgetPagesData([updatedWidget.id], models);
299
- }
300
- res.message = req?.i18n?.t('widget.partialUpdate');
301
- return successResponse(updatedWidget, res);
302
- }
303
- );
304
-
305
- export const getItemsTypes = catchAsync(
306
- async (req: IRequest, res: IResponse) => {
307
- const itemsTypes: TypesType[] = [
308
- {
309
- value: Object.keys(ItemsType)[0],
310
- label: Object.values(ItemsType)[0],
311
- },
312
- ];
313
- defaults.collections.forEach((item: CollectionItem) => {
314
- itemsTypes.push({
315
- value: item.collectionName,
316
- label: item.title,
317
- });
318
- });
319
- res.message = req?.i18n?.t('widget.getItemsTypes');
320
- return successResponse(itemsTypes, res);
321
- }
322
- );
323
-
324
- export const getWidgetTypes = catchAsync(
325
- async (req: IRequest, res: IResponse) => {
326
- const widgetTypes: any[] = Object.entries(WidgetTypes).map((e) => ({
327
- label: e[1],
328
- value: e[0],
329
- }));
330
- if (
331
- Array.isArray(defaults.customWidgetTypes) &&
332
- defaults.customWidgetTypes.length > 0
333
- ) {
334
- widgetTypes.push(...defaults.customWidgetTypes);
335
- }
336
- res.message = req?.i18n?.t('widget.getWidgetTypes');
337
- return successResponse(widgetTypes, res);
338
- }
339
- );
340
-
341
- export const getCollectionData = catchAsync(async (req: IRequest, res: IResponse) => {
342
- const models = getModals(req);
343
- const { search, collectionName, collectionItems } = req.body;
344
- const collectionItem: CollectionItem | undefined = defaults.collections.find(
345
- (collection) => collection.collectionName === collectionName
346
- );
347
- if (!collectionItem) {
348
- throw new Error(`No collection is specified with ${collectionName}`);
349
- }
350
- let limit = collectionItem.searchLimit || 10;
351
- if (Array.isArray(collectionItems))
352
- limit = Math.max(collectionItems.length, limit);
353
- // setting up mongoose model
354
- const TempModel = getCollectionModal(collectionName, models);
355
- // fetching data
356
- let query: any = collectionItem.filters || {};
357
- const orOptions: any = [];
358
- let addFieldOptions: any = {};
359
- if (
360
- search &&
361
- Array.isArray(collectionItem.searchColumns) &&
362
- collectionItem.searchColumns.length
363
- ) {
364
- collectionItem.searchColumns.forEach((column) =>
365
- orOptions.push({
366
- [column]: {
367
- $regex: search,
368
- $options: 'i',
369
- },
370
- })
371
- );
372
- } else {
373
- orOptions.push({});
374
- }
375
- if (Array.isArray(collectionItems) && collectionItems.length) {
376
- addFieldOptions = {
377
- __order: {
378
- $indexOfArray: [
379
- collectionItems,
380
- {
381
- $toString: '$_id',
382
- },
383
- ],
384
- },
385
- };
386
- orOptions.push({ _id: { $in: formatCollectionItems(collectionItems) } });
387
- }
388
- if (orOptions.length > 0) {
389
- query = {
390
- ...query,
391
- $or: orOptions,
392
- };
393
- }
394
- const collectionData = await TempModel.aggregate([
395
- ...(Array.isArray(collectionItem.aggregations)
396
- ? collectionItem.aggregations
397
- : []),
398
- {
399
- $match: query,
400
- },
401
- { $addFields: addFieldOptions },
402
- {
403
- $sort: {
404
- __order: -1,
405
- },
406
- },
407
- {
408
- $limit: limit,
409
- },
410
- ]);
411
- res.message = req?.i18n?.t('widget.getCollectionData');
412
- return successResponse({ docs: collectionData }, res);
413
- });
414
-
415
- export const getLanguages = catchAsync(async (req: any, res: any) => {
416
- return successResponse(
417
- Array.isArray(defaults.languages) ? defaults.languages : [],
418
- res
419
- );
420
- });
package/src/index.ts DELETED
@@ -1,59 +0,0 @@
1
- import { defaults } from './utils/defaults';
2
- import WidgetRoutes from './routes/WidgetRoute';
3
- import PageRoutes from './routes/PageRoute';
4
- import UserRoutes from './routes/UserRoute';
5
- import {
6
- Widget,
7
- Item,
8
- Page,
9
- Tab,
10
- SrcSet,
11
- WidgetSchema,
12
- ItemSchema,
13
- PageSchema,
14
- SrcSetSchema,
15
- TabSchema,
16
- } from './models';
17
- import { IConfig } from './types';
18
- import { handleUpdateData, handleResetData } from './services/dataService';
19
-
20
- function setConfig(config: Partial<IConfig>) {
21
- if (config.logger) {
22
- defaults.logger = config.logger;
23
- }
24
- if (typeof config.catchAsync === 'function')
25
- defaults.catchAsync = config.catchAsync;
26
- if (typeof config.getModals === 'function')
27
- defaults.getModals = config.getModals;
28
- if (Array.isArray(config.collections)) {
29
- defaults.collections = config.collections;
30
- }
31
- if (Array.isArray(config.customWidgetTypes)) {
32
- defaults.customWidgetTypes = config.customWidgetTypes;
33
- }
34
- if (typeof config.redis === 'string' || typeof config.redis === 'object') {
35
- defaults.redis = config.redis;
36
- }
37
- if (Array.isArray(config.languages) && config.languages.length > 0) {
38
- defaults.languages = config.languages;
39
- }
40
- }
41
-
42
- export {
43
- WidgetRoutes,
44
- PageRoutes,
45
- UserRoutes,
46
- Widget,
47
- Item,
48
- Page,
49
- Tab,
50
- SrcSet,
51
- WidgetSchema,
52
- ItemSchema,
53
- PageSchema,
54
- SrcSetSchema,
55
- TabSchema,
56
- setConfig,
57
- handleResetData,
58
- handleUpdateData,
59
- };
@@ -1,53 +0,0 @@
1
- import { Schema, Types, model } from 'mongoose';
2
- import mongoosePaginate from 'mongoose-paginate-v2';
3
- import { softDeletePlugin } from '../plugins/softDelete';
4
- import { IModel, IItemSchema, ItemTypes } from '../types';
5
- import { defaults } from '../utils/defaults';
6
-
7
- const titlesSchema =
8
- defaults.languages?.reduce((acc: any, lang) => {
9
- acc[lang.code] = { type: String, required: true };
10
- return acc;
11
- }, {}) || {};
12
-
13
- const imagesSchema =
14
- defaults.languages?.reduce((acc: any, lang) => {
15
- acc[lang.code] = { type: Schema.Types.ObjectId, ref: 'file' };
16
- return acc;
17
- }, {}) || {};
18
-
19
- const altTextsSchema =
20
- defaults.languages?.reduce((acc: any, lang) => {
21
- acc[lang.code] = { type: String };
22
- return acc;
23
- }, {}) || {};
24
-
25
- const ItemSchema = new Schema<IItemSchema>({
26
- widgetId: {
27
- type: Types.ObjectId,
28
- ref: 'Widget',
29
- },
30
- title: String,
31
- titles: titlesSchema,
32
- subtitle: String,
33
- subtitles: titlesSchema,
34
- altText: String,
35
- altTexts: altTextsSchema,
36
- link: String,
37
- sequence: Number,
38
- img: { type: Schema.Types.ObjectId, ref: 'file' },
39
- imgs: imagesSchema,
40
- itemType: {
41
- type: String,
42
- enum: Object.values(ItemTypes),
43
- default: ItemTypes.Web,
44
- required: true,
45
- },
46
- });
47
-
48
- ItemSchema.plugin(softDeletePlugin);
49
- ItemSchema.plugin(mongoosePaginate);
50
-
51
- const Item = model('Item', ItemSchema) as unknown as IModel<IItemSchema>;
52
-
53
- export { Item, ItemSchema };
@@ -1,22 +0,0 @@
1
- import { Schema, model, Types } from 'mongoose';
2
- import mongoosePaginate from 'mongoose-paginate-v2';
3
- import { softDeletePlugin } from '../plugins/softDelete';
4
- import { IModel, IPageSchema } from '../types';
5
-
6
- const PageSchema = new Schema<IPageSchema>({
7
- name: String,
8
- code: String,
9
- slug: String,
10
- canDel: {
11
- type: Boolean,
12
- default: true,
13
- },
14
- widgets: [{ type: Types.ObjectId, ref: 'Widget' }],
15
- });
16
-
17
- PageSchema.plugin(softDeletePlugin);
18
- PageSchema.plugin(mongoosePaginate);
19
-
20
- const Page = model('Page', PageSchema) as unknown as IModel<IPageSchema>;
21
-
22
- export { Page, PageSchema };
@@ -1,16 +0,0 @@
1
- import { Schema, model, Types, Model } from 'mongoose';
2
- import { ISrcSetSchema } from '../types';
3
-
4
- const SrcSetSchema = new Schema<ISrcSetSchema>({
5
- width: Number,
6
- height: Number,
7
- screenSize: Number,
8
- itemId: {
9
- type: Types.ObjectId,
10
- ref: 'Item',
11
- },
12
- });
13
-
14
- const SrcSet: Model<ISrcSetSchema> = model('SrcSet', SrcSetSchema);
15
-
16
- export { SrcSet, SrcSetSchema };
package/src/models/Tab.ts DELETED
@@ -1,28 +0,0 @@
1
- import { Schema, model, Types } from 'mongoose';
2
- import mongoosePaginate from 'mongoose-paginate-v2';
3
- import { softDeletePlugin } from '../plugins/softDelete';
4
- import { IModel, ITabSchema } from '../types';
5
- import { defaults } from '../utils/defaults';
6
-
7
- const namesSchema =
8
- defaults.languages?.reduce((acc: any, lang) => {
9
- acc[lang.code] = { type: String, required: true };
10
- return acc;
11
- }, {}) || {};
12
-
13
- const TabSchema = new Schema<ITabSchema>({
14
- name: String,
15
- names: namesSchema,
16
- widgetId: {
17
- type: Types.ObjectId,
18
- ref: 'Widget',
19
- },
20
- collectionItems: [{ type: Types.ObjectId }],
21
- });
22
-
23
- TabSchema.plugin(softDeletePlugin);
24
- TabSchema.plugin(mongoosePaginate);
25
-
26
- const Tab = model('Tab', TabSchema) as unknown as IModel<ITabSchema>;
27
-
28
- export { Tab, TabSchema };
@@ -1,65 +0,0 @@
1
- import { Schema, model, Types } from 'mongoose';
2
- import mongoosePaginate from 'mongoose-paginate-v2';
3
- import { softDeletePlugin } from '../plugins/softDelete';
4
- import { IModel, IWidgetSchema, WidgetTypes, ItemsType } from '../types';
5
- import { defaults } from '../utils/defaults';
6
-
7
- const languageTitlesSchema =
8
- defaults.languages?.reduce((acc: any, lang) => {
9
- acc[lang.code] = { type: String, required: true };
10
- return acc;
11
- }, {}) || {};
12
-
13
- const WidgetSchema = new Schema<IWidgetSchema>({
14
- name: String,
15
- code: String,
16
- autoPlay: {
17
- type: Boolean,
18
- default: false,
19
- },
20
- isActive: {
21
- type: Boolean,
22
- default: true,
23
- },
24
- widgetTitle: String,
25
- widgetTitles: languageTitlesSchema,
26
- webPerRow: Number,
27
- mobilePerRow: Number,
28
- tabletPerRow: Number,
29
- collectionName: String,
30
- backgroundColor: String,
31
- collectionItems: [{ type: Types.ObjectId, refPath: 'collectionName' }],
32
- itemsType: {
33
- type: String,
34
- default: ItemsType.Image,
35
- required: true,
36
- },
37
- widgetType: {
38
- type: String,
39
- default: WidgetTypes.FixedCard,
40
- required: true,
41
- },
42
- tabs: [
43
- {
44
- name: String,
45
- names: languageTitlesSchema,
46
- collectionItems: [{ type: Types.ObjectId, refPath: 'collectionName' }],
47
- },
48
- ],
49
- canDel: {
50
- type: Boolean,
51
- default: true,
52
- },
53
- textContent: {type: String},
54
- htmlContent: {type: String}
55
- });
56
-
57
- WidgetSchema.plugin(softDeletePlugin);
58
- WidgetSchema.plugin(mongoosePaginate);
59
-
60
- const Widget = model(
61
- 'Widget',
62
- WidgetSchema
63
- ) as unknown as IModel<IWidgetSchema>;
64
-
65
- export { Widget, WidgetSchema };