@knovator/pagecreator-node 1.1.8 → 1.2.0
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/package.json +3 -6
- package/src/constants/index.ts +30 -0
- package/src/controllers/PageController.ts +88 -0
- package/src/controllers/TabController.ts +47 -0
- package/src/controllers/UserController.ts +69 -0
- package/src/controllers/WidgetController.ts +420 -0
- package/src/index.ts +59 -0
- package/src/models/Item.ts +53 -0
- package/src/models/Page.ts +22 -0
- package/src/models/SrcSet.ts +16 -0
- package/src/models/Tab.ts +28 -0
- package/src/models/Widget.ts +65 -0
- package/src/models/{index.d.ts → index.ts} +13 -1
- package/src/plugins/softDelete.ts +84 -0
- package/src/routes/PageRoute.ts +30 -0
- package/src/routes/UserRoute.ts +32 -0
- package/src/routes/WidgetRoute.ts +77 -0
- package/src/services/dataService.ts +475 -0
- package/src/services/dbService.ts +102 -0
- package/src/types/{IRequest.d.ts → IRequest.ts} +4 -3
- package/src/types/{IResponse.d.ts → IResponse.ts} +4 -3
- package/src/types/{Router.d.ts → Router.ts} +2 -1
- package/src/types/common.ts +172 -0
- package/src/types/enums.ts +16 -0
- package/src/utils/defaults.ts +41 -0
- package/src/utils/helper.ts +285 -0
- package/src/utils/redis.ts +57 -0
- package/src/utils/responseHandlers.ts +60 -0
- package/src/utils/validate.ts +22 -0
- package/src/utils/validations/page.ts +52 -0
- package/src/utils/validations/tab.ts +26 -0
- package/src/utils/validations/user.ts +10 -0
- package/src/utils/validations/widget.ts +169 -0
- package/src/constants/index.d.ts +0 -20
- package/src/constants/index.js +0 -34
- package/src/constants/index.js.map +0 -1
- package/src/controllers/PageController.d.ts +0 -4
- package/src/controllers/PageController.js +0 -84
- package/src/controllers/PageController.js.map +0 -1
- package/src/controllers/TabController.d.ts +0 -4
- package/src/controllers/TabController.js +0 -46
- package/src/controllers/TabController.js.map +0 -1
- package/src/controllers/UserController.d.ts +0 -2
- package/src/controllers/UserController.js +0 -65
- package/src/controllers/UserController.js.map +0 -1
- package/src/controllers/WidgetController.d.ts +0 -10
- package/src/controllers/WidgetController.js +0 -329
- package/src/controllers/WidgetController.js.map +0 -1
- package/src/index.d.ts +0 -8
- package/src/index.js +0 -48
- package/src/index.js.map +0 -1
- package/src/models/Item.d.ts +0 -30
- package/src/models/Item.js +0 -50
- package/src/models/Item.js.map +0 -1
- package/src/models/Page.d.ts +0 -30
- package/src/models/Page.js +0 -19
- package/src/models/Page.js.map +0 -1
- package/src/models/SrcSet.d.ts +0 -30
- package/src/models/SrcSet.js +0 -17
- package/src/models/SrcSet.js.map +0 -1
- package/src/models/Tab.d.ts +0 -30
- package/src/models/Tab.js +0 -28
- package/src/models/Tab.js.map +0 -1
- package/src/models/Widget.d.ts +0 -30
- package/src/models/Widget.js +0 -58
- package/src/models/Widget.js.map +0 -1
- package/src/models/index.js +0 -19
- package/src/models/index.js.map +0 -1
- package/src/plugins/softDelete.d.ts +0 -7
- package/src/plugins/softDelete.js +0 -64
- package/src/plugins/softDelete.js.map +0 -1
- package/src/routes/PageRoute.d.ts +0 -3
- package/src/routes/PageRoute.js +0 -30
- package/src/routes/PageRoute.js.map +0 -1
- package/src/routes/UserRoute.d.ts +0 -3
- package/src/routes/UserRoute.js +0 -23
- package/src/routes/UserRoute.js.map +0 -1
- package/src/routes/WidgetRoute.d.ts +0 -3
- package/src/routes/WidgetRoute.js +0 -68
- package/src/routes/WidgetRoute.js.map +0 -1
- package/src/services/dataService.d.ts +0 -9
- package/src/services/dataService.js +0 -403
- package/src/services/dataService.js.map +0 -1
- package/src/services/dbService.d.ts +0 -16
- package/src/services/dbService.js +0 -88
- package/src/services/dbService.js.map +0 -1
- package/src/types/IRequest.js +0 -3
- package/src/types/IRequest.js.map +0 -1
- package/src/types/IResponse.js +0 -3
- package/src/types/IResponse.js.map +0 -1
- package/src/types/Router.js +0 -3
- package/src/types/Router.js.map +0 -1
- package/src/types/common.d.ts +0 -138
- package/src/types/common.js +0 -3
- package/src/types/common.js.map +0 -1
- package/src/types/enums.d.ts +0 -13
- package/src/types/enums.js +0 -20
- package/src/types/enums.js.map +0 -1
- package/src/types/index.js +0 -9
- package/src/types/index.js.map +0 -1
- package/src/utils/defaults.d.ts +0 -7
- package/src/utils/defaults.js +0 -41
- package/src/utils/defaults.js.map +0 -1
- package/src/utils/helper.d.ts +0 -7
- package/src/utils/helper.js +0 -225
- package/src/utils/helper.js.map +0 -1
- package/src/utils/redis.d.ts +0 -3
- package/src/utils/redis.js +0 -59
- package/src/utils/redis.js.map +0 -1
- package/src/utils/responseHandlers.d.ts +0 -6
- package/src/utils/responseHandlers.js +0 -57
- package/src/utils/responseHandlers.js.map +0 -1
- package/src/utils/validate.d.ts +0 -4
- package/src/utils/validate.js +0 -24
- package/src/utils/validate.js.map +0 -1
- package/src/utils/validations/page.d.ts +0 -7
- package/src/utils/validations/page.js +0 -51
- package/src/utils/validations/page.js.map +0 -1
- package/src/utils/validations/tab.d.ts +0 -6
- package/src/utils/validations/tab.js +0 -26
- package/src/utils/validations/tab.js.map +0 -1
- package/src/utils/validations/user.d.ts +0 -3
- package/src/utils/validations/user.js +0 -13
- package/src/utils/validations/user.js.map +0 -1
- package/src/utils/validations/widget.d.ts +0 -9
- package/src/utils/validations/widget.js +0 -151
- package/src/utils/validations/widget.js.map +0 -1
- /package/src/types/{index.d.ts → index.ts} +0 -0
package/src/index.ts
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
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
|
+
};
|
|
@@ -0,0 +1,53 @@
|
|
|
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 };
|
|
@@ -0,0 +1,22 @@
|
|
|
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 };
|
|
@@ -0,0 +1,16 @@
|
|
|
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 };
|
|
@@ -0,0 +1,28 @@
|
|
|
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 };
|
|
@@ -0,0 +1,65 @@
|
|
|
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 };
|
|
@@ -3,4 +3,16 @@ import { Item, ItemSchema } from './Item';
|
|
|
3
3
|
import { Page, PageSchema } from './Page';
|
|
4
4
|
import { SrcSet, SrcSetSchema } from './SrcSet';
|
|
5
5
|
import { Tab, TabSchema } from './Tab';
|
|
6
|
-
|
|
6
|
+
|
|
7
|
+
export {
|
|
8
|
+
Widget,
|
|
9
|
+
Item,
|
|
10
|
+
Page,
|
|
11
|
+
SrcSet,
|
|
12
|
+
Tab,
|
|
13
|
+
WidgetSchema,
|
|
14
|
+
ItemSchema,
|
|
15
|
+
PageSchema,
|
|
16
|
+
SrcSetSchema,
|
|
17
|
+
TabSchema,
|
|
18
|
+
};
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import mongoose from 'mongoose';
|
|
2
|
+
|
|
3
|
+
export type TWithSoftDeleted = {
|
|
4
|
+
isDeleted?: boolean;
|
|
5
|
+
deletedAt?: Date | null;
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
type TDocument = TWithSoftDeleted & mongoose.Document;
|
|
9
|
+
|
|
10
|
+
const softDeletePlugin = (schema: mongoose.Schema) => {
|
|
11
|
+
schema.add({
|
|
12
|
+
isDeleted: {
|
|
13
|
+
type: Boolean,
|
|
14
|
+
required: true,
|
|
15
|
+
default: false,
|
|
16
|
+
},
|
|
17
|
+
deletedAt: {
|
|
18
|
+
type: Date,
|
|
19
|
+
default: null,
|
|
20
|
+
},
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
const typesFindQueryMiddleware = [
|
|
24
|
+
'count',
|
|
25
|
+
'find',
|
|
26
|
+
'findOne',
|
|
27
|
+
'findOneAndDelete',
|
|
28
|
+
'findOneAndRemove',
|
|
29
|
+
'findOneAndUpdate',
|
|
30
|
+
'update',
|
|
31
|
+
'updateOne',
|
|
32
|
+
'updateMany',
|
|
33
|
+
];
|
|
34
|
+
|
|
35
|
+
const setDocumentIsDeleted = async (doc: TDocument) => {
|
|
36
|
+
doc.isDeleted = true;
|
|
37
|
+
doc.deletedAt = new Date();
|
|
38
|
+
doc.$isDeleted(true);
|
|
39
|
+
await doc.save();
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
const excludeInFindQueriesIsDeleted = async function (
|
|
43
|
+
this: mongoose.FilterQuery<TDocument>,
|
|
44
|
+
next: mongoose.CallbackWithoutResultAndOptionalError
|
|
45
|
+
) {
|
|
46
|
+
this['where']({ isDeleted: false });
|
|
47
|
+
next();
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
const excludeInDeletedInAggregateMiddleware = async function (
|
|
51
|
+
this: mongoose.Aggregate<any>,
|
|
52
|
+
next: mongoose.CallbackWithoutResultAndOptionalError
|
|
53
|
+
) {
|
|
54
|
+
this.pipeline().unshift({ $match: { isDeleted: false } });
|
|
55
|
+
next();
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
schema.pre(
|
|
59
|
+
'remove',
|
|
60
|
+
async function (
|
|
61
|
+
this: TDocument,
|
|
62
|
+
next: mongoose.CallbackWithoutResultAndOptionalError
|
|
63
|
+
) {
|
|
64
|
+
await setDocumentIsDeleted(this);
|
|
65
|
+
next();
|
|
66
|
+
}
|
|
67
|
+
);
|
|
68
|
+
|
|
69
|
+
typesFindQueryMiddleware.forEach((type: any) => {
|
|
70
|
+
schema.pre(type, excludeInFindQueriesIsDeleted);
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
schema.pre('aggregate', excludeInDeletedInAggregateMiddleware);
|
|
74
|
+
|
|
75
|
+
schema.method('toJSON', function () {
|
|
76
|
+
const obj: TDocument = this.toObject();
|
|
77
|
+
delete obj.isDeleted;
|
|
78
|
+
delete obj.deletedAt;
|
|
79
|
+
|
|
80
|
+
return obj;
|
|
81
|
+
});
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
export { softDeletePlugin };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import express from 'express';
|
|
2
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
3
|
+
require('express-list-endpoints-descriptor')(express);
|
|
4
|
+
import { IRouter } from '../types';
|
|
5
|
+
|
|
6
|
+
import validate from '../utils/validate';
|
|
7
|
+
import * as pageValidation from '../utils/validations/page';
|
|
8
|
+
import * as pageController from '../controllers/PageController';
|
|
9
|
+
|
|
10
|
+
const descriptorPrefix = process.env['PAGECREATOR_DESCRIPTOR_PREFIX'] || '';
|
|
11
|
+
const routes = express.Router() as IRouter;
|
|
12
|
+
routes.use(express.json());
|
|
13
|
+
|
|
14
|
+
// Get all pages
|
|
15
|
+
routes
|
|
16
|
+
.post(`/list`, validate(pageValidation.list), pageController.getPages)
|
|
17
|
+
.descriptor(`${descriptorPrefix}page.getAll`);
|
|
18
|
+
// Create a page
|
|
19
|
+
routes
|
|
20
|
+
.post(`/`, validate(pageValidation.create), pageController.createPage)
|
|
21
|
+
.descriptor(`${descriptorPrefix}page.create`);
|
|
22
|
+
// Update a page
|
|
23
|
+
routes
|
|
24
|
+
.put(`/:id`, validate(pageValidation.update), pageController.updatePage)
|
|
25
|
+
.descriptor(`${descriptorPrefix}page.update`);
|
|
26
|
+
// Delete a page
|
|
27
|
+
routes
|
|
28
|
+
.delete(`/:id`, pageController.deletePage)
|
|
29
|
+
.descriptor(`${descriptorPrefix}page.delete`);
|
|
30
|
+
export default routes;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import express from 'express';
|
|
2
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
3
|
+
require('express-list-endpoints-descriptor')(express);
|
|
4
|
+
import { IRouter } from '../types';
|
|
5
|
+
|
|
6
|
+
import validate from '../utils/validate';
|
|
7
|
+
import * as userValidation from '../utils/validations/user';
|
|
8
|
+
import * as userController from '../controllers/UserController';
|
|
9
|
+
|
|
10
|
+
const descriptorPrefix = process.env['PAGECREATOR_DESCRIPTOR_PREFIX'] || '';
|
|
11
|
+
const routes = express.Router() as IRouter;
|
|
12
|
+
routes.use(express.json());
|
|
13
|
+
|
|
14
|
+
// Item Routes
|
|
15
|
+
// Get Widget Data
|
|
16
|
+
routes
|
|
17
|
+
.post(
|
|
18
|
+
`/widget-data`,
|
|
19
|
+
validate(userValidation.getWidgetData),
|
|
20
|
+
userController.getWidgetData
|
|
21
|
+
)
|
|
22
|
+
.descriptor(`${descriptorPrefix}user.getWidgetData`);
|
|
23
|
+
// Get Page Data
|
|
24
|
+
routes
|
|
25
|
+
.post(
|
|
26
|
+
'/page-data',
|
|
27
|
+
validate(userValidation.getPageData),
|
|
28
|
+
userController.getPageData
|
|
29
|
+
)
|
|
30
|
+
.descriptor(`${descriptorPrefix}user.getPageData`);
|
|
31
|
+
|
|
32
|
+
export default routes;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import express from 'express';
|
|
2
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
3
|
+
require('express-list-endpoints-descriptor')(express);
|
|
4
|
+
import { IRouter } from '../types';
|
|
5
|
+
|
|
6
|
+
import validate from '../utils/validate';
|
|
7
|
+
import * as tabValidation from '../utils/validations/tab';
|
|
8
|
+
import * as widgetValidation from '../utils/validations/widget';
|
|
9
|
+
import * as widgetController from '../controllers/WidgetController';
|
|
10
|
+
import * as tabController from '../controllers/TabController';
|
|
11
|
+
|
|
12
|
+
const descriptorPrefix = process.env['PAGECREATOR_DESCRIPTOR_PREFIX'] || '';
|
|
13
|
+
const routes = express.Router() as IRouter;
|
|
14
|
+
routes.use(express.json());
|
|
15
|
+
|
|
16
|
+
// Widget Routes
|
|
17
|
+
// Get widget types
|
|
18
|
+
routes
|
|
19
|
+
.get('/widget-types', widgetController.getItemsTypes)
|
|
20
|
+
.descriptor(`${descriptorPrefix}widget.getItemsTypes`);
|
|
21
|
+
// Get widget selection types
|
|
22
|
+
routes
|
|
23
|
+
.get('/selection-types', widgetController.getWidgetTypes)
|
|
24
|
+
.descriptor(`${descriptorPrefix}widget.getWidgetTypes`);
|
|
25
|
+
// Get all widgets
|
|
26
|
+
routes
|
|
27
|
+
.post(`/list`, validate(widgetValidation.list), widgetController.getWidgets)
|
|
28
|
+
.descriptor(`${descriptorPrefix}widget.getAll`);
|
|
29
|
+
// Create a widget
|
|
30
|
+
routes
|
|
31
|
+
.post(`/`, validate(widgetValidation.create), widgetController.createWidget)
|
|
32
|
+
.descriptor(`${descriptorPrefix}widget.create`);
|
|
33
|
+
// Update a widget
|
|
34
|
+
routes
|
|
35
|
+
.put(`/:id`, validate(widgetValidation.update), widgetController.updateWidget)
|
|
36
|
+
.descriptor(`${descriptorPrefix}widget.update`);
|
|
37
|
+
// Partial Update a widget
|
|
38
|
+
routes
|
|
39
|
+
.patch(
|
|
40
|
+
`/:id`,
|
|
41
|
+
validate(widgetValidation.partialUpdate),
|
|
42
|
+
widgetController.partialUpdateWidget
|
|
43
|
+
)
|
|
44
|
+
.descriptor(`${descriptorPrefix}widget.partialUpdate`);
|
|
45
|
+
// Delete a widget
|
|
46
|
+
routes
|
|
47
|
+
.delete(`/:id`, widgetController.deleteWidget)
|
|
48
|
+
.descriptor(`${descriptorPrefix}widget.delete`);
|
|
49
|
+
// Get dynamic collection data
|
|
50
|
+
routes
|
|
51
|
+
.post(
|
|
52
|
+
'/collection-data',
|
|
53
|
+
validate(widgetValidation.getCollectionData),
|
|
54
|
+
widgetController.getCollectionData
|
|
55
|
+
)
|
|
56
|
+
.descriptor(`${descriptorPrefix}widget.getCollectionData`);
|
|
57
|
+
// Tabs
|
|
58
|
+
routes
|
|
59
|
+
.post('/tabs', validate(tabValidation.create), tabController.createTab)
|
|
60
|
+
.descriptor(`${descriptorPrefix}tab.create`);
|
|
61
|
+
routes
|
|
62
|
+
.put('/tabs/:tabId', validate(tabValidation.update), tabController.updateTab)
|
|
63
|
+
.descriptor(`${descriptorPrefix}tab.update`);
|
|
64
|
+
routes
|
|
65
|
+
.delete('/tabs/:tabId', tabController.deleteTab)
|
|
66
|
+
.descriptor(`${descriptorPrefix}tab.delete`);
|
|
67
|
+
routes
|
|
68
|
+
.get('/tabs/:widgetId', tabController.getTabs)
|
|
69
|
+
.descriptor(`${descriptorPrefix}tab.getAll`);
|
|
70
|
+
// Get all languages
|
|
71
|
+
routes.get(`/languages`, widgetController.getLanguages);
|
|
72
|
+
// Get single widget
|
|
73
|
+
routes
|
|
74
|
+
.get(`/:id`, widgetController.getSingleWidget)
|
|
75
|
+
.descriptor(`${descriptorPrefix}widget.getOne`);
|
|
76
|
+
|
|
77
|
+
export default routes;
|