@webiny/api-page-builder-so-ddb-es 0.0.0-ee-vpcs.549378cf03
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/LICENSE +21 -0
- package/README.md +30 -0
- package/configurations.d.ts +9 -0
- package/configurations.js +49 -0
- package/configurations.js.map +1 -0
- package/definitions/blockCategoryEntity.d.ts +9 -0
- package/definitions/blockCategoryEntity.js +61 -0
- package/definitions/blockCategoryEntity.js.map +1 -0
- package/definitions/categoryEntity.d.ts +9 -0
- package/definitions/categoryEntity.js +61 -0
- package/definitions/categoryEntity.js.map +1 -0
- package/definitions/menuEntity.d.ts +9 -0
- package/definitions/menuEntity.js +61 -0
- package/definitions/menuEntity.js.map +1 -0
- package/definitions/pageBlockEntity.d.ts +9 -0
- package/definitions/pageBlockEntity.js +64 -0
- package/definitions/pageBlockEntity.js.map +1 -0
- package/definitions/pageElasticsearchEntity.d.ts +9 -0
- package/definitions/pageElasticsearchEntity.js +40 -0
- package/definitions/pageElasticsearchEntity.js.map +1 -0
- package/definitions/pageElementEntity.d.ts +9 -0
- package/definitions/pageElementEntity.js +67 -0
- package/definitions/pageElementEntity.js.map +1 -0
- package/definitions/pageEntity.d.ts +9 -0
- package/definitions/pageEntity.js +97 -0
- package/definitions/pageEntity.js.map +1 -0
- package/definitions/settingsEntity.d.ts +9 -0
- package/definitions/settingsEntity.js +77 -0
- package/definitions/settingsEntity.js.map +1 -0
- package/definitions/systemEntity.d.ts +9 -0
- package/definitions/systemEntity.js +40 -0
- package/definitions/systemEntity.js.map +1 -0
- package/definitions/table.d.ts +9 -0
- package/definitions/table.js +24 -0
- package/definitions/table.js.map +1 -0
- package/definitions/tableElasticsearch.d.ts +9 -0
- package/definitions/tableElasticsearch.js +24 -0
- package/definitions/tableElasticsearch.js.map +1 -0
- package/elasticsearch/createElasticsearchIndex.d.ts +9 -0
- package/elasticsearch/createElasticsearchIndex.js +60 -0
- package/elasticsearch/createElasticsearchIndex.js.map +1 -0
- package/elasticsearch/indices/base.d.ts +2 -0
- package/elasticsearch/indices/base.js +15 -0
- package/elasticsearch/indices/base.js.map +1 -0
- package/elasticsearch/indices/index.d.ts +1 -0
- package/elasticsearch/indices/index.js +16 -0
- package/elasticsearch/indices/index.js.map +1 -0
- package/elasticsearch/indices/japanese.d.ts +2 -0
- package/elasticsearch/indices/japanese.js +16 -0
- package/elasticsearch/indices/japanese.js.map +1 -0
- package/index.d.ts +2 -0
- package/index.js +233 -0
- package/index.js.map +1 -0
- package/operations/blockCategory/dataLoader.d.ts +16 -0
- package/operations/blockCategory/dataLoader.js +79 -0
- package/operations/blockCategory/dataLoader.js.map +1 -0
- package/operations/blockCategory/fields.d.ts +2 -0
- package/operations/blockCategory/fields.js +28 -0
- package/operations/blockCategory/fields.js.map +1 -0
- package/operations/blockCategory/index.d.ts +8 -0
- package/operations/blockCategory/index.js +208 -0
- package/operations/blockCategory/index.js.map +1 -0
- package/operations/blockCategory/keys.d.ts +9 -0
- package/operations/blockCategory/keys.js +25 -0
- package/operations/blockCategory/keys.js.map +1 -0
- package/operations/category/dataLoader.d.ts +16 -0
- package/operations/category/dataLoader.js +79 -0
- package/operations/category/dataLoader.js.map +1 -0
- package/operations/category/fields.d.ts +2 -0
- package/operations/category/fields.js +28 -0
- package/operations/category/fields.js.map +1 -0
- package/operations/category/index.d.ts +8 -0
- package/operations/category/index.js +208 -0
- package/operations/category/index.js.map +1 -0
- package/operations/category/keys.d.ts +9 -0
- package/operations/category/keys.js +25 -0
- package/operations/category/keys.js.map +1 -0
- package/operations/menu/fields.d.ts +2 -0
- package/operations/menu/fields.js +27 -0
- package/operations/menu/fields.js.map +1 -0
- package/operations/menu/index.d.ts +8 -0
- package/operations/menu/index.js +217 -0
- package/operations/menu/index.js.map +1 -0
- package/operations/pageBlock/dataLoader.d.ts +16 -0
- package/operations/pageBlock/dataLoader.js +79 -0
- package/operations/pageBlock/dataLoader.js.map +1 -0
- package/operations/pageBlock/fields.d.ts +2 -0
- package/operations/pageBlock/fields.js +25 -0
- package/operations/pageBlock/fields.js.map +1 -0
- package/operations/pageBlock/index.d.ts +8 -0
- package/operations/pageBlock/index.js +208 -0
- package/operations/pageBlock/index.js.map +1 -0
- package/operations/pageBlock/keys.d.ts +9 -0
- package/operations/pageBlock/keys.js +25 -0
- package/operations/pageBlock/keys.js.map +1 -0
- package/operations/pageElement/fields.d.ts +2 -0
- package/operations/pageElement/fields.js +19 -0
- package/operations/pageElement/fields.js.map +1 -0
- package/operations/pageElement/index.d.ts +8 -0
- package/operations/pageElement/index.js +207 -0
- package/operations/pageElement/index.js.map +1 -0
- package/operations/pages/elasticsearchQueryBody.d.ts +12 -0
- package/operations/pages/elasticsearchQueryBody.js +237 -0
- package/operations/pages/elasticsearchQueryBody.js.map +1 -0
- package/operations/pages/fields.d.ts +4 -0
- package/operations/pages/fields.js +54 -0
- package/operations/pages/fields.js.map +1 -0
- package/operations/pages/helpers.d.ts +35 -0
- package/operations/pages/helpers.js +83 -0
- package/operations/pages/helpers.js.map +1 -0
- package/operations/pages/index.d.ts +11 -0
- package/operations/pages/index.js +829 -0
- package/operations/pages/index.js.map +1 -0
- package/operations/pages/keys.d.ts +24 -0
- package/operations/pages/keys.js +79 -0
- package/operations/pages/keys.js.map +1 -0
- package/operations/settings/index.d.ts +6 -0
- package/operations/settings/index.js +178 -0
- package/operations/settings/index.js.map +1 -0
- package/operations/system/index.d.ts +6 -0
- package/operations/system/index.js +104 -0
- package/operations/system/index.js.map +1 -0
- package/package.json +65 -0
- package/plugins/definitions/BlockCategoryDynamoDbElasticFieldPlugin.d.ts +4 -0
- package/plugins/definitions/BlockCategoryDynamoDbElasticFieldPlugin.js +17 -0
- package/plugins/definitions/BlockCategoryDynamoDbElasticFieldPlugin.js.map +1 -0
- package/plugins/definitions/CategoryDynamoDbElasticFieldPlugin.d.ts +4 -0
- package/plugins/definitions/CategoryDynamoDbElasticFieldPlugin.js +17 -0
- package/plugins/definitions/CategoryDynamoDbElasticFieldPlugin.js.map +1 -0
- package/plugins/definitions/IndexPageDataPlugin.d.ts +17 -0
- package/plugins/definitions/IndexPageDataPlugin.js +32 -0
- package/plugins/definitions/IndexPageDataPlugin.js.map +1 -0
- package/plugins/definitions/MenuDynamoDbElasticFieldPlugin.d.ts +4 -0
- package/plugins/definitions/MenuDynamoDbElasticFieldPlugin.js +17 -0
- package/plugins/definitions/MenuDynamoDbElasticFieldPlugin.js.map +1 -0
- package/plugins/definitions/PageBlockDynamoDbFieldPlugin.d.ts +4 -0
- package/plugins/definitions/PageBlockDynamoDbFieldPlugin.js +17 -0
- package/plugins/definitions/PageBlockDynamoDbFieldPlugin.js.map +1 -0
- package/plugins/definitions/PageDynamoDbElasticsearchFieldPlugin.d.ts +4 -0
- package/plugins/definitions/PageDynamoDbElasticsearchFieldPlugin.js +17 -0
- package/plugins/definitions/PageDynamoDbElasticsearchFieldPlugin.js.map +1 -0
- package/plugins/definitions/PageElasticsearchBodyModifierPlugin.d.ts +4 -0
- package/plugins/definitions/PageElasticsearchBodyModifierPlugin.js +17 -0
- package/plugins/definitions/PageElasticsearchBodyModifierPlugin.js.map +1 -0
- package/plugins/definitions/PageElasticsearchFieldPlugin.d.ts +4 -0
- package/plugins/definitions/PageElasticsearchFieldPlugin.js +17 -0
- package/plugins/definitions/PageElasticsearchFieldPlugin.js.map +1 -0
- package/plugins/definitions/PageElasticsearchIndexPlugin.d.ts +4 -0
- package/plugins/definitions/PageElasticsearchIndexPlugin.js +17 -0
- package/plugins/definitions/PageElasticsearchIndexPlugin.js.map +1 -0
- package/plugins/definitions/PageElasticsearchQueryModifierPlugin.d.ts +4 -0
- package/plugins/definitions/PageElasticsearchQueryModifierPlugin.js +17 -0
- package/plugins/definitions/PageElasticsearchQueryModifierPlugin.js.map +1 -0
- package/plugins/definitions/PageElasticsearchSortModifierPlugin.d.ts +4 -0
- package/plugins/definitions/PageElasticsearchSortModifierPlugin.js +17 -0
- package/plugins/definitions/PageElasticsearchSortModifierPlugin.js.map +1 -0
- package/plugins/definitions/PageElementDynamoDbElasticFieldPlugin.d.ts +4 -0
- package/plugins/definitions/PageElementDynamoDbElasticFieldPlugin.js +17 -0
- package/plugins/definitions/PageElementDynamoDbElasticFieldPlugin.js.map +1 -0
- package/plugins/definitions/SearchLatestPagesPlugin.d.ts +4 -0
- package/plugins/definitions/SearchLatestPagesPlugin.js +17 -0
- package/plugins/definitions/SearchLatestPagesPlugin.js.map +1 -0
- package/plugins/definitions/SearchPagesPlugin.d.ts +23 -0
- package/plugins/definitions/SearchPagesPlugin.js +39 -0
- package/plugins/definitions/SearchPagesPlugin.js.map +1 -0
- package/plugins/definitions/SearchPublishedPagesPlugin.d.ts +4 -0
- package/plugins/definitions/SearchPublishedPagesPlugin.js +17 -0
- package/plugins/definitions/SearchPublishedPagesPlugin.js.map +1 -0
- package/types.d.ts +39 -0
- package/types.js +20 -0
- package/types.js.map +1 -0
- package/upgrades/index.d.ts +2 -0
- package/upgrades/index.js +14 -0
- package/upgrades/index.js.map +1 -0
- package/upgrades/v5.15.0/category.d.ts +2 -0
- package/upgrades/v5.15.0/category.js +73 -0
- package/upgrades/v5.15.0/category.js.map +1 -0
- package/upgrades/v5.15.0/index.d.ts +4 -0
- package/upgrades/v5.15.0/index.js +52 -0
- package/upgrades/v5.15.0/index.js.map +1 -0
- package/upgrades/v5.15.0/menu.d.ts +2 -0
- package/upgrades/v5.15.0/menu.js +73 -0
- package/upgrades/v5.15.0/menu.js.map +1 -0
- package/upgrades/v5.15.0/pageElement.d.ts +2 -0
- package/upgrades/v5.15.0/pageElement.js +73 -0
- package/upgrades/v5.15.0/pageElement.js.map +1 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createPageElementDynamoDbFields = void 0;
|
|
7
|
+
|
|
8
|
+
var _PageElementDynamoDbElasticFieldPlugin = require("../../plugins/definitions/PageElementDynamoDbElasticFieldPlugin");
|
|
9
|
+
|
|
10
|
+
const createPageElementDynamoDbFields = () => [new _PageElementDynamoDbElasticFieldPlugin.PageElementDynamoDbElasticFieldPlugin({
|
|
11
|
+
field: "createdOn",
|
|
12
|
+
type: "date"
|
|
13
|
+
}), new _PageElementDynamoDbElasticFieldPlugin.PageElementDynamoDbElasticFieldPlugin({
|
|
14
|
+
field: "createdBy",
|
|
15
|
+
path: "createdBy.id",
|
|
16
|
+
sortable: false
|
|
17
|
+
})];
|
|
18
|
+
|
|
19
|
+
exports.createPageElementDynamoDbFields = createPageElementDynamoDbFields;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createPageElementDynamoDbFields","PageElementDynamoDbElasticFieldPlugin","field","type","path","sortable"],"sources":["fields.ts"],"sourcesContent":["import { PageElementDynamoDbElasticFieldPlugin } from \"~/plugins/definitions/PageElementDynamoDbElasticFieldPlugin\";\n\nexport const createPageElementDynamoDbFields = (): PageElementDynamoDbElasticFieldPlugin[] => [\n new PageElementDynamoDbElasticFieldPlugin({\n field: \"createdOn\",\n type: \"date\"\n }),\n new PageElementDynamoDbElasticFieldPlugin({\n field: \"createdBy\",\n path: \"createdBy.id\",\n sortable: false\n })\n];\n"],"mappings":";;;;;;;AAAA;;AAEO,MAAMA,+BAA+B,GAAG,MAA+C,CAC1F,IAAIC,4EAAJ,CAA0C;EACtCC,KAAK,EAAE,WAD+B;EAEtCC,IAAI,EAAE;AAFgC,CAA1C,CAD0F,EAK1F,IAAIF,4EAAJ,CAA0C;EACtCC,KAAK,EAAE,WAD+B;EAEtCE,IAAI,EAAE,cAFgC;EAGtCC,QAAQ,EAAE;AAH4B,CAA1C,CAL0F,CAAvF"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { PageElementStorageOperations } from "@webiny/api-page-builder/types";
|
|
2
|
+
import { Entity } from "dynamodb-toolbox";
|
|
3
|
+
import { PluginsContainer } from "@webiny/plugins";
|
|
4
|
+
export interface CreatePageElementStorageOperationsParams {
|
|
5
|
+
entity: Entity<any>;
|
|
6
|
+
plugins: PluginsContainer;
|
|
7
|
+
}
|
|
8
|
+
export declare const createPageElementStorageOperations: ({ entity, plugins }: CreatePageElementStorageOperationsParams) => PageElementStorageOperations;
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.createPageElementStorageOperations = void 0;
|
|
9
|
+
|
|
10
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
11
|
+
|
|
12
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
13
|
+
|
|
14
|
+
var _cleanup = require("@webiny/db-dynamodb/utils/cleanup");
|
|
15
|
+
|
|
16
|
+
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
17
|
+
|
|
18
|
+
var _query = require("@webiny/db-dynamodb/utils/query");
|
|
19
|
+
|
|
20
|
+
var _filter = require("@webiny/db-dynamodb/utils/filter");
|
|
21
|
+
|
|
22
|
+
var _sort = require("@webiny/db-dynamodb/utils/sort");
|
|
23
|
+
|
|
24
|
+
var _listResponse = require("@webiny/db-dynamodb/utils/listResponse");
|
|
25
|
+
|
|
26
|
+
var _PageElementDynamoDbElasticFieldPlugin = require("../../plugins/definitions/PageElementDynamoDbElasticFieldPlugin");
|
|
27
|
+
|
|
28
|
+
const _excluded = ["tenant", "locale"];
|
|
29
|
+
|
|
30
|
+
const createPartitionKey = params => {
|
|
31
|
+
const {
|
|
32
|
+
tenant,
|
|
33
|
+
locale
|
|
34
|
+
} = params;
|
|
35
|
+
return `T#${tenant}#L#${locale}#PB#PE`;
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
const createSortKey = params => {
|
|
39
|
+
const {
|
|
40
|
+
id
|
|
41
|
+
} = params;
|
|
42
|
+
return id;
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
const createType = () => {
|
|
46
|
+
return "pb.pageElement";
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
const createPageElementStorageOperations = ({
|
|
50
|
+
entity,
|
|
51
|
+
plugins
|
|
52
|
+
}) => {
|
|
53
|
+
const create = async params => {
|
|
54
|
+
const {
|
|
55
|
+
pageElement
|
|
56
|
+
} = params;
|
|
57
|
+
const keys = {
|
|
58
|
+
PK: createPartitionKey(pageElement),
|
|
59
|
+
SK: createSortKey(pageElement)
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
try {
|
|
63
|
+
await entity.put((0, _objectSpread2.default)((0, _objectSpread2.default)({}, pageElement), {}, {
|
|
64
|
+
TYPE: createType()
|
|
65
|
+
}, keys));
|
|
66
|
+
return pageElement;
|
|
67
|
+
} catch (ex) {
|
|
68
|
+
throw new _error.default(ex.message || "Could not create pageElement.", ex.code || "PAGE_ELEMENT_CREATE_ERROR", {
|
|
69
|
+
keys,
|
|
70
|
+
pageElement
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
const update = async params => {
|
|
76
|
+
const {
|
|
77
|
+
pageElement,
|
|
78
|
+
original
|
|
79
|
+
} = params;
|
|
80
|
+
const keys = {
|
|
81
|
+
PK: createPartitionKey(pageElement),
|
|
82
|
+
SK: createSortKey(pageElement)
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
try {
|
|
86
|
+
await entity.put((0, _objectSpread2.default)((0, _objectSpread2.default)({}, pageElement), {}, {
|
|
87
|
+
TYPE: createType()
|
|
88
|
+
}, keys));
|
|
89
|
+
return pageElement;
|
|
90
|
+
} catch (ex) {
|
|
91
|
+
throw new _error.default(ex.message || "Could not update pageElement.", ex.code || "PAGE_ELEMENT_UPDATE_ERROR", {
|
|
92
|
+
keys,
|
|
93
|
+
original,
|
|
94
|
+
pageElement
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
const deletePageElement = async params => {
|
|
100
|
+
const {
|
|
101
|
+
pageElement
|
|
102
|
+
} = params;
|
|
103
|
+
const keys = {
|
|
104
|
+
PK: createPartitionKey(pageElement),
|
|
105
|
+
SK: createSortKey(pageElement)
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
try {
|
|
109
|
+
await entity.delete(keys);
|
|
110
|
+
return pageElement;
|
|
111
|
+
} catch (ex) {
|
|
112
|
+
throw new _error.default(ex.message || "Could not delete pageElement.", ex.code || "PAGE_ELEMENT_DELETE_ERROR", {
|
|
113
|
+
keys,
|
|
114
|
+
pageElement
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
const get = async params => {
|
|
120
|
+
const {
|
|
121
|
+
where
|
|
122
|
+
} = params;
|
|
123
|
+
const keys = {
|
|
124
|
+
PK: createPartitionKey(where),
|
|
125
|
+
SK: createSortKey(where)
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
try {
|
|
129
|
+
const result = await entity.get(keys);
|
|
130
|
+
|
|
131
|
+
if (!result || !result.Item) {
|
|
132
|
+
return null;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
return (0, _cleanup.cleanupItem)(entity, result.Item);
|
|
136
|
+
} catch (ex) {
|
|
137
|
+
throw new _error.default(ex.message || "Could not load page element by given parameters.", ex.code || "PAGE_ELEMENT_GET_ERROR", {
|
|
138
|
+
where
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
const list = async params => {
|
|
144
|
+
const {
|
|
145
|
+
where,
|
|
146
|
+
sort,
|
|
147
|
+
limit = 10
|
|
148
|
+
} = params;
|
|
149
|
+
const {
|
|
150
|
+
tenant,
|
|
151
|
+
locale
|
|
152
|
+
} = where,
|
|
153
|
+
restWhere = (0, _objectWithoutProperties2.default)(where, _excluded);
|
|
154
|
+
const queryAllParams = {
|
|
155
|
+
entity,
|
|
156
|
+
partitionKey: createPartitionKey({
|
|
157
|
+
tenant,
|
|
158
|
+
locale
|
|
159
|
+
}),
|
|
160
|
+
options: {
|
|
161
|
+
limit: limit || undefined,
|
|
162
|
+
gt: " "
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
let results = [];
|
|
166
|
+
|
|
167
|
+
try {
|
|
168
|
+
results = await (0, _query.queryAll)(queryAllParams);
|
|
169
|
+
} catch (ex) {
|
|
170
|
+
throw new _error.default(ex.message || "Could not list page elements by given parameters.", ex.code || "PAGE_ELEMENTS_LIST_ERROR", {
|
|
171
|
+
partitionKey: queryAllParams.partitionKey,
|
|
172
|
+
options: queryAllParams.options
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
const fields = plugins.byType(_PageElementDynamoDbElasticFieldPlugin.PageElementDynamoDbElasticFieldPlugin.type);
|
|
177
|
+
const filteredItems = (0, _filter.filterItems)({
|
|
178
|
+
plugins,
|
|
179
|
+
where: restWhere,
|
|
180
|
+
items: results,
|
|
181
|
+
fields
|
|
182
|
+
}).map(item => {
|
|
183
|
+
return (0, _cleanup.cleanupItem)(entity, item);
|
|
184
|
+
});
|
|
185
|
+
const sortedItems = (0, _sort.sortItems)({
|
|
186
|
+
items: filteredItems,
|
|
187
|
+
sort,
|
|
188
|
+
fields
|
|
189
|
+
});
|
|
190
|
+
return (0, _listResponse.createListResponse)({
|
|
191
|
+
items: sortedItems,
|
|
192
|
+
limit,
|
|
193
|
+
totalCount: filteredItems.length,
|
|
194
|
+
after: null
|
|
195
|
+
});
|
|
196
|
+
};
|
|
197
|
+
|
|
198
|
+
return {
|
|
199
|
+
get,
|
|
200
|
+
create,
|
|
201
|
+
update,
|
|
202
|
+
delete: deletePageElement,
|
|
203
|
+
list
|
|
204
|
+
};
|
|
205
|
+
};
|
|
206
|
+
|
|
207
|
+
exports.createPageElementStorageOperations = createPageElementStorageOperations;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createPartitionKey","params","tenant","locale","createSortKey","id","createType","createPageElementStorageOperations","entity","plugins","create","pageElement","keys","PK","SK","put","TYPE","ex","WebinyError","message","code","update","original","deletePageElement","delete","get","where","result","Item","cleanupItem","list","sort","limit","restWhere","queryAllParams","partitionKey","options","undefined","gt","results","queryAll","fields","byType","PageElementDynamoDbElasticFieldPlugin","type","filteredItems","filterItems","items","map","item","sortedItems","sortItems","createListResponse","totalCount","length","after"],"sources":["index.ts"],"sourcesContent":["import {\n PageElement,\n PageElementStorageOperations,\n PageElementStorageOperationsCreateParams,\n PageElementStorageOperationsDeleteParams,\n PageElementStorageOperationsGetParams,\n PageElementStorageOperationsListParams,\n PageElementStorageOperationsUpdateParams\n} from \"@webiny/api-page-builder/types\";\nimport { Entity } from \"dynamodb-toolbox\";\nimport { cleanupItem } from \"@webiny/db-dynamodb/utils/cleanup\";\nimport WebinyError from \"@webiny/error\";\nimport { queryAll, QueryAllParams } from \"@webiny/db-dynamodb/utils/query\";\nimport { filterItems } from \"@webiny/db-dynamodb/utils/filter\";\nimport { sortItems } from \"@webiny/db-dynamodb/utils/sort\";\nimport { createListResponse } from \"@webiny/db-dynamodb/utils/listResponse\";\nimport { PageElementDynamoDbElasticFieldPlugin } from \"~/plugins/definitions/PageElementDynamoDbElasticFieldPlugin\";\nimport { PluginsContainer } from \"@webiny/plugins\";\n\ninterface PartitionKeyParams {\n tenant: string;\n locale: string;\n}\nconst createPartitionKey = (params: PartitionKeyParams): string => {\n const { tenant, locale } = params;\n return `T#${tenant}#L#${locale}#PB#PE`;\n};\n\ninterface SortKeyParams {\n id: string;\n}\nconst createSortKey = (params: SortKeyParams): string => {\n const { id } = params;\n return id;\n};\n\nconst createType = (): string => {\n return \"pb.pageElement\";\n};\n\nexport interface CreatePageElementStorageOperationsParams {\n entity: Entity<any>;\n plugins: PluginsContainer;\n}\nexport const createPageElementStorageOperations = ({\n entity,\n plugins\n}: CreatePageElementStorageOperationsParams): PageElementStorageOperations => {\n const create = async (params: PageElementStorageOperationsCreateParams) => {\n const { pageElement } = params;\n const keys = {\n PK: createPartitionKey(pageElement),\n SK: createSortKey(pageElement)\n };\n\n try {\n await entity.put({\n ...pageElement,\n TYPE: createType(),\n ...keys\n });\n return pageElement;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create pageElement.\",\n ex.code || \"PAGE_ELEMENT_CREATE_ERROR\",\n {\n keys,\n pageElement\n }\n );\n }\n };\n\n const update = async (params: PageElementStorageOperationsUpdateParams) => {\n const { pageElement, original } = params;\n const keys = {\n PK: createPartitionKey(pageElement),\n SK: createSortKey(pageElement)\n };\n\n try {\n await entity.put({\n ...pageElement,\n TYPE: createType(),\n ...keys\n });\n return pageElement;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update pageElement.\",\n ex.code || \"PAGE_ELEMENT_UPDATE_ERROR\",\n {\n keys,\n original,\n pageElement\n }\n );\n }\n };\n\n const deletePageElement = async (params: PageElementStorageOperationsDeleteParams) => {\n const { pageElement } = params;\n const keys = {\n PK: createPartitionKey(pageElement),\n SK: createSortKey(pageElement)\n };\n\n try {\n await entity.delete(keys);\n return pageElement;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete pageElement.\",\n ex.code || \"PAGE_ELEMENT_DELETE_ERROR\",\n {\n keys,\n pageElement\n }\n );\n }\n };\n\n const get = async (params: PageElementStorageOperationsGetParams) => {\n const { where } = params;\n\n const keys = {\n PK: createPartitionKey(where),\n SK: createSortKey(where)\n };\n try {\n const result = await entity.get(keys);\n if (!result || !result.Item) {\n return null;\n }\n return cleanupItem(entity, result.Item);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not load page element by given parameters.\",\n ex.code || \"PAGE_ELEMENT_GET_ERROR\",\n {\n where\n }\n );\n }\n };\n\n const list = async (params: PageElementStorageOperationsListParams) => {\n const { where, sort, limit = 10 } = params;\n\n const { tenant, locale, ...restWhere } = where;\n const queryAllParams: QueryAllParams = {\n entity,\n partitionKey: createPartitionKey({\n tenant,\n locale\n }),\n options: {\n limit: limit || undefined,\n gt: \" \"\n }\n };\n\n let results: PageElement[] = [];\n\n try {\n results = await queryAll<PageElement>(queryAllParams);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not list page elements by given parameters.\",\n ex.code || \"PAGE_ELEMENTS_LIST_ERROR\",\n {\n partitionKey: queryAllParams.partitionKey,\n options: queryAllParams.options\n }\n );\n }\n\n const fields = plugins.byType<PageElementDynamoDbElasticFieldPlugin>(\n PageElementDynamoDbElasticFieldPlugin.type\n );\n\n const filteredItems = filterItems<PageElement>({\n plugins,\n where: restWhere,\n items: results,\n fields\n }).map(item => {\n return cleanupItem<PageElement>(entity, item);\n }) as PageElement[];\n\n const sortedItems = sortItems<PageElement>({\n items: filteredItems,\n sort,\n fields\n });\n\n return createListResponse({\n items: sortedItems,\n limit,\n totalCount: filteredItems.length,\n after: null\n });\n };\n\n return {\n get,\n create,\n update,\n delete: deletePageElement,\n list\n };\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { SearchBody as esSearchBody } from "elastic-ts";
|
|
2
|
+
import { PageStorageOperationsListWhere } from "@webiny/api-page-builder/types";
|
|
3
|
+
import { PluginsContainer } from "@webiny/plugins";
|
|
4
|
+
interface CreateElasticsearchBodyParams {
|
|
5
|
+
plugins: PluginsContainer;
|
|
6
|
+
where: PageStorageOperationsListWhere;
|
|
7
|
+
limit: number;
|
|
8
|
+
after: string | null;
|
|
9
|
+
sort: string[];
|
|
10
|
+
}
|
|
11
|
+
export declare const createElasticsearchQueryBody: (params: CreateElasticsearchBodyParams) => esSearchBody & Pick<Required<esSearchBody>, "sort">;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.createElasticsearchQueryBody = void 0;
|
|
9
|
+
|
|
10
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
11
|
+
|
|
12
|
+
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
13
|
+
|
|
14
|
+
var _apiElasticsearch = require("@webiny/api-elasticsearch");
|
|
15
|
+
|
|
16
|
+
var _PageElasticsearchFieldPlugin = require("../../plugins/definitions/PageElasticsearchFieldPlugin");
|
|
17
|
+
|
|
18
|
+
var _PageElasticsearchSortModifierPlugin = require("../../plugins/definitions/PageElasticsearchSortModifierPlugin");
|
|
19
|
+
|
|
20
|
+
var _PageElasticsearchQueryModifierPlugin = require("../../plugins/definitions/PageElasticsearchQueryModifierPlugin");
|
|
21
|
+
|
|
22
|
+
var _PageElasticsearchBodyModifierPlugin = require("../../plugins/definitions/PageElasticsearchBodyModifierPlugin");
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Latest and published are specific in Elasticsearch to that extend that they are tagged in the published or latest property.
|
|
26
|
+
* We allow either published or either latest.
|
|
27
|
+
* Latest is used in the manage API and published in the read API.
|
|
28
|
+
*/
|
|
29
|
+
const createInitialQueryValue = args => {
|
|
30
|
+
const {
|
|
31
|
+
where
|
|
32
|
+
} = args;
|
|
33
|
+
const query = {
|
|
34
|
+
must: [],
|
|
35
|
+
must_not: [],
|
|
36
|
+
should: [],
|
|
37
|
+
filter: []
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* We must transform published and latest where args into something that is understandable by our Elasticsearch
|
|
41
|
+
*/
|
|
42
|
+
|
|
43
|
+
if (where.published === true) {
|
|
44
|
+
query.must.push({
|
|
45
|
+
term: {
|
|
46
|
+
published: true
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
} else if (where.latest === true) {
|
|
50
|
+
query.must.push({
|
|
51
|
+
term: {
|
|
52
|
+
latest: true
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
} // we do not allow not published and not latest
|
|
56
|
+
else if (where.published === false) {
|
|
57
|
+
throw new _error.default(`Cannot call Elasticsearch query with "published" set at false.`, "ELASTICSEARCH_UNSUPPORTED_QUERY", {
|
|
58
|
+
where
|
|
59
|
+
});
|
|
60
|
+
} else if (where.latest === false) {
|
|
61
|
+
throw new _error.default(`Cannot call Elasticsearch query with "latest" set at false.`, "ELASTICSEARCH_UNSUPPORTED_QUERY", {
|
|
62
|
+
where
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
delete where.published;
|
|
67
|
+
delete where.latest; //
|
|
68
|
+
|
|
69
|
+
return query;
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
const createElasticsearchQuery = params => {
|
|
73
|
+
const {
|
|
74
|
+
plugins,
|
|
75
|
+
where: initialWhere,
|
|
76
|
+
fieldPlugins
|
|
77
|
+
} = params;
|
|
78
|
+
const query = createInitialQueryValue({
|
|
79
|
+
where: initialWhere
|
|
80
|
+
});
|
|
81
|
+
/**
|
|
82
|
+
* Be aware that, if having more registered operator plugins of same type, the last one will be used.
|
|
83
|
+
*/
|
|
84
|
+
|
|
85
|
+
const operatorPlugins = (0, _apiElasticsearch.getElasticsearchOperatorPluginsByLocale)(plugins, initialWhere.locale);
|
|
86
|
+
const where = (0, _objectSpread2.default)({}, initialWhere);
|
|
87
|
+
/**
|
|
88
|
+
* Tags are specific so extract them and remove from where.
|
|
89
|
+
*/
|
|
90
|
+
|
|
91
|
+
const {
|
|
92
|
+
tags_in: tags,
|
|
93
|
+
tags_rule: tagsRule
|
|
94
|
+
} = initialWhere;
|
|
95
|
+
delete where["tags_in"];
|
|
96
|
+
delete where["tags_rule"];
|
|
97
|
+
|
|
98
|
+
if (tags && Array.isArray(tags) === true && tags.length > 0) {
|
|
99
|
+
if (tagsRule === "any") {
|
|
100
|
+
query.filter.push({
|
|
101
|
+
terms: {
|
|
102
|
+
"tags.keyword": tags
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
} else {
|
|
106
|
+
query.filter.push({
|
|
107
|
+
bool: {
|
|
108
|
+
must: tags.map(tag => {
|
|
109
|
+
return {
|
|
110
|
+
term: {
|
|
111
|
+
"tags.keyword": tag
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
})
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Specific search parameter
|
|
121
|
+
*/
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
if (where.search) {
|
|
125
|
+
query.must.push({
|
|
126
|
+
query_string: {
|
|
127
|
+
query: `*${where.search}*`,
|
|
128
|
+
allow_leading_wildcard: true,
|
|
129
|
+
fields: ["titleLC", "snippet"]
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
delete where.search;
|
|
135
|
+
/**
|
|
136
|
+
* !!! IMPORTANT !!! There are few specific cases where we hardcode the query conditions.
|
|
137
|
+
*
|
|
138
|
+
* When ES index is shared between tenants, we need to filter records by tenant ID.
|
|
139
|
+
*/
|
|
140
|
+
|
|
141
|
+
const sharedIndex = process.env.ELASTICSEARCH_SHARED_INDEXES === "true";
|
|
142
|
+
|
|
143
|
+
if (sharedIndex) {
|
|
144
|
+
const tenant = initialWhere.tenant;
|
|
145
|
+
query.must.push({
|
|
146
|
+
term: {
|
|
147
|
+
"tenant.keyword": tenant
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
/**
|
|
151
|
+
* Remove so it is not applied again later.
|
|
152
|
+
* Possibly tenant is not defined, but just in case, remove it.
|
|
153
|
+
*/
|
|
154
|
+
|
|
155
|
+
delete where["tenant"];
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* We apply other conditions as they are passed via the where value.
|
|
159
|
+
*/
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
(0, _apiElasticsearch.applyWhere)({
|
|
163
|
+
query,
|
|
164
|
+
where,
|
|
165
|
+
fields: fieldPlugins,
|
|
166
|
+
operators: operatorPlugins
|
|
167
|
+
});
|
|
168
|
+
return query;
|
|
169
|
+
};
|
|
170
|
+
|
|
171
|
+
const createElasticsearchQueryBody = params => {
|
|
172
|
+
const {
|
|
173
|
+
plugins,
|
|
174
|
+
where,
|
|
175
|
+
limit: initialLimit,
|
|
176
|
+
sort: initialSort,
|
|
177
|
+
after
|
|
178
|
+
} = params;
|
|
179
|
+
const fieldPlugins = plugins.byType(_PageElasticsearchFieldPlugin.PageElasticsearchFieldPlugin.type).reduce((acc, plugin) => {
|
|
180
|
+
acc[plugin.field] = plugin;
|
|
181
|
+
return acc;
|
|
182
|
+
}, {});
|
|
183
|
+
const limit = (0, _apiElasticsearch.createLimit)(initialLimit, 100);
|
|
184
|
+
const query = createElasticsearchQuery((0, _objectSpread2.default)((0, _objectSpread2.default)({}, params), {}, {
|
|
185
|
+
fieldPlugins
|
|
186
|
+
}));
|
|
187
|
+
const sort = (0, _apiElasticsearch.createSort)({
|
|
188
|
+
sort: initialSort,
|
|
189
|
+
fieldPlugins
|
|
190
|
+
});
|
|
191
|
+
const queryModifiers = plugins.byType(_PageElasticsearchQueryModifierPlugin.PageElasticsearchQueryModifierPlugin.type);
|
|
192
|
+
|
|
193
|
+
for (const plugin of queryModifiers) {
|
|
194
|
+
plugin.modifyQuery({
|
|
195
|
+
query,
|
|
196
|
+
where
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
const sortModifiers = plugins.byType(_PageElasticsearchSortModifierPlugin.PageElasticsearchSortModifierPlugin.type);
|
|
201
|
+
|
|
202
|
+
for (const plugin of sortModifiers) {
|
|
203
|
+
plugin.modifySort({
|
|
204
|
+
sort
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
const body = {
|
|
209
|
+
query: {
|
|
210
|
+
constant_score: {
|
|
211
|
+
filter: {
|
|
212
|
+
bool: (0, _objectSpread2.default)({}, query)
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
},
|
|
216
|
+
size: limit + 1,
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* Casting as any is required due to search_after is accepting an array of values.
|
|
220
|
+
* Which is correct in some cases. In our case, it is not.
|
|
221
|
+
* https://www.elastic.co/guide/en/elasticsearch/reference/7.13/paginate-search-results.html
|
|
222
|
+
*/
|
|
223
|
+
search_after: (0, _apiElasticsearch.decodeCursor)(after),
|
|
224
|
+
sort
|
|
225
|
+
};
|
|
226
|
+
const bodyModifiers = plugins.byType(_PageElasticsearchBodyModifierPlugin.PageElasticsearchBodyModifierPlugin.type);
|
|
227
|
+
|
|
228
|
+
for (const plugin of bodyModifiers) {
|
|
229
|
+
plugin.modifyBody({
|
|
230
|
+
body
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
return body;
|
|
235
|
+
};
|
|
236
|
+
|
|
237
|
+
exports.createElasticsearchQueryBody = createElasticsearchQueryBody;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createInitialQueryValue","args","where","query","must","must_not","should","filter","published","push","term","latest","WebinyError","createElasticsearchQuery","params","plugins","initialWhere","fieldPlugins","operatorPlugins","getElasticsearchOperatorPluginsByLocale","locale","tags_in","tags","tags_rule","tagsRule","Array","isArray","length","terms","bool","map","tag","search","query_string","allow_leading_wildcard","fields","sharedIndex","process","env","ELASTICSEARCH_SHARED_INDEXES","tenant","applyWhere","operators","createElasticsearchQueryBody","limit","initialLimit","sort","initialSort","after","byType","PageElasticsearchFieldPlugin","type","reduce","acc","plugin","field","createLimit","createSort","queryModifiers","PageElasticsearchQueryModifierPlugin","modifyQuery","sortModifiers","PageElasticsearchSortModifierPlugin","modifySort","body","constant_score","size","search_after","decodeCursor","bodyModifiers","PageElasticsearchBodyModifierPlugin","modifyBody"],"sources":["elasticsearchQueryBody.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { SearchBody as esSearchBody } from \"elastic-ts\";\nimport {\n applyWhere,\n createLimit,\n createSort,\n decodeCursor,\n ElasticsearchFieldPlugin,\n getElasticsearchOperatorPluginsByLocale\n} from \"@webiny/api-elasticsearch\";\nimport { ElasticsearchBoolQueryConfig } from \"@webiny/api-elasticsearch/types\";\nimport { PageStorageOperationsListWhere } from \"@webiny/api-page-builder/types\";\nimport { PageElasticsearchFieldPlugin } from \"~/plugins/definitions/PageElasticsearchFieldPlugin\";\nimport { PageElasticsearchSortModifierPlugin } from \"~/plugins/definitions/PageElasticsearchSortModifierPlugin\";\nimport { PageElasticsearchQueryModifierPlugin } from \"~/plugins/definitions/PageElasticsearchQueryModifierPlugin\";\nimport { PageElasticsearchBodyModifierPlugin } from \"~/plugins/definitions/PageElasticsearchBodyModifierPlugin\";\nimport { PluginsContainer } from \"@webiny/plugins\";\n\ninterface CreateElasticsearchQueryArgs {\n where: PageStorageOperationsListWhere;\n}\n\n/**\n * Latest and published are specific in Elasticsearch to that extend that they are tagged in the published or latest property.\n * We allow either published or either latest.\n * Latest is used in the manage API and published in the read API.\n */\nconst createInitialQueryValue = (\n args: CreateElasticsearchQueryArgs\n): ElasticsearchBoolQueryConfig => {\n const { where } = args;\n\n const query: ElasticsearchBoolQueryConfig = {\n must: [],\n must_not: [],\n should: [],\n filter: []\n };\n\n /**\n * We must transform published and latest where args into something that is understandable by our Elasticsearch\n */\n if (where.published === true) {\n query.must.push({\n term: {\n published: true\n }\n });\n } else if (where.latest === true) {\n query.must.push({\n term: {\n latest: true\n }\n });\n }\n // we do not allow not published and not latest\n else if (where.published === false) {\n throw new WebinyError(\n `Cannot call Elasticsearch query with \"published\" set at false.`,\n \"ELASTICSEARCH_UNSUPPORTED_QUERY\",\n {\n where\n }\n );\n } else if (where.latest === false) {\n throw new WebinyError(\n `Cannot call Elasticsearch query with \"latest\" set at false.`,\n \"ELASTICSEARCH_UNSUPPORTED_QUERY\",\n {\n where\n }\n );\n }\n delete where.published;\n delete where.latest;\n //\n return query;\n};\n\ninterface CreateElasticsearchBodyParams {\n plugins: PluginsContainer;\n where: PageStorageOperationsListWhere;\n limit: number;\n after: string | null;\n sort: string[];\n}\n\nconst createElasticsearchQuery = (\n params: CreateElasticsearchBodyParams & {\n fieldPlugins: Record<string, ElasticsearchFieldPlugin>;\n }\n) => {\n const { plugins, where: initialWhere, fieldPlugins } = params;\n const query = createInitialQueryValue({\n where: initialWhere\n });\n /**\n * Be aware that, if having more registered operator plugins of same type, the last one will be used.\n */\n const operatorPlugins = getElasticsearchOperatorPluginsByLocale(plugins, initialWhere.locale);\n\n const where: Partial<PageStorageOperationsListWhere> = {\n ...initialWhere\n };\n /**\n * Tags are specific so extract them and remove from where.\n */\n const { tags_in: tags, tags_rule: tagsRule } = initialWhere;\n delete where[\"tags_in\"];\n delete where[\"tags_rule\"];\n if (tags && Array.isArray(tags) === true && tags.length > 0) {\n if (tagsRule === \"any\") {\n query.filter.push({\n terms: {\n \"tags.keyword\": tags\n }\n });\n } else {\n query.filter.push({\n bool: {\n must: tags.map(tag => {\n return {\n term: {\n \"tags.keyword\": tag\n }\n };\n })\n }\n });\n }\n }\n /**\n * Specific search parameter\n */\n if (where.search) {\n query.must.push({\n query_string: {\n query: `*${where.search}*`,\n allow_leading_wildcard: true,\n fields: [\"titleLC\", \"snippet\"]\n }\n });\n }\n delete where.search;\n\n /**\n * !!! IMPORTANT !!! There are few specific cases where we hardcode the query conditions.\n *\n * When ES index is shared between tenants, we need to filter records by tenant ID.\n */\n const sharedIndex = process.env.ELASTICSEARCH_SHARED_INDEXES === \"true\";\n if (sharedIndex) {\n const tenant = initialWhere.tenant;\n query.must.push({ term: { \"tenant.keyword\": tenant } });\n /**\n * Remove so it is not applied again later.\n * Possibly tenant is not defined, but just in case, remove it.\n */\n delete where[\"tenant\"];\n }\n /**\n * We apply other conditions as they are passed via the where value.\n */\n applyWhere({\n query,\n where,\n fields: fieldPlugins,\n operators: operatorPlugins\n });\n\n return query;\n};\n\nexport const createElasticsearchQueryBody = (\n params: CreateElasticsearchBodyParams\n): esSearchBody & Pick<Required<esSearchBody>, \"sort\"> => {\n const { plugins, where, limit: initialLimit, sort: initialSort, after } = params;\n\n const fieldPlugins = plugins\n .byType<PageElasticsearchFieldPlugin>(PageElasticsearchFieldPlugin.type)\n .reduce((acc, plugin) => {\n acc[plugin.field] = plugin;\n return acc;\n }, {} as Record<string, PageElasticsearchFieldPlugin>);\n\n const limit = createLimit(initialLimit, 100);\n\n const query = createElasticsearchQuery({\n ...params,\n fieldPlugins\n });\n\n const sort = createSort({\n sort: initialSort,\n fieldPlugins\n });\n\n const queryModifiers = plugins.byType<PageElasticsearchQueryModifierPlugin>(\n PageElasticsearchQueryModifierPlugin.type\n );\n for (const plugin of queryModifiers) {\n plugin.modifyQuery({\n query,\n where\n });\n }\n\n const sortModifiers = plugins.byType<PageElasticsearchSortModifierPlugin>(\n PageElasticsearchSortModifierPlugin.type\n );\n for (const plugin of sortModifiers) {\n plugin.modifySort({\n sort\n });\n }\n\n const body = {\n query: {\n constant_score: {\n filter: {\n bool: {\n ...query\n }\n }\n }\n },\n size: limit + 1,\n /**\n * Casting as any is required due to search_after is accepting an array of values.\n * Which is correct in some cases. In our case, it is not.\n * https://www.elastic.co/guide/en/elasticsearch/reference/7.13/paginate-search-results.html\n */\n search_after: decodeCursor(after) as any,\n sort\n };\n\n const bodyModifiers = plugins.byType<PageElasticsearchBodyModifierPlugin>(\n PageElasticsearchBodyModifierPlugin.type\n );\n for (const plugin of bodyModifiers) {\n plugin.modifyBody({\n body\n });\n }\n\n return body;\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { PageElasticsearchFieldPlugin } from "../../plugins/definitions/PageElasticsearchFieldPlugin";
|
|
2
|
+
import { PageDynamoDbElasticsearchFieldPlugin } from "../../plugins/definitions/PageDynamoDbElasticsearchFieldPlugin";
|
|
3
|
+
export declare const createPagesElasticsearchFields: () => PageElasticsearchFieldPlugin[];
|
|
4
|
+
export declare const createPagesDynamoDbFields: () => PageDynamoDbElasticsearchFieldPlugin[];
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createPagesElasticsearchFields = exports.createPagesDynamoDbFields = void 0;
|
|
7
|
+
|
|
8
|
+
var _PageElasticsearchFieldPlugin = require("../../plugins/definitions/PageElasticsearchFieldPlugin");
|
|
9
|
+
|
|
10
|
+
var _PageDynamoDbElasticsearchFieldPlugin = require("../../plugins/definitions/PageDynamoDbElasticsearchFieldPlugin");
|
|
11
|
+
|
|
12
|
+
const createPagesElasticsearchFields = () => [new _PageElasticsearchFieldPlugin.PageElasticsearchFieldPlugin({
|
|
13
|
+
field: "createdOn",
|
|
14
|
+
unmappedType: "date",
|
|
15
|
+
keyword: false
|
|
16
|
+
}), new _PageElasticsearchFieldPlugin.PageElasticsearchFieldPlugin({
|
|
17
|
+
field: "savedOn",
|
|
18
|
+
unmappedType: "date",
|
|
19
|
+
keyword: false
|
|
20
|
+
}), new _PageElasticsearchFieldPlugin.PageElasticsearchFieldPlugin({
|
|
21
|
+
field: "publishedOn",
|
|
22
|
+
unmappedType: "date",
|
|
23
|
+
keyword: false
|
|
24
|
+
}), new _PageElasticsearchFieldPlugin.PageElasticsearchFieldPlugin({
|
|
25
|
+
field: "createdBy",
|
|
26
|
+
path: "createdBy.id"
|
|
27
|
+
}), new _PageElasticsearchFieldPlugin.PageElasticsearchFieldPlugin({
|
|
28
|
+
field: "ownedBy",
|
|
29
|
+
path: "ownedBy.id"
|
|
30
|
+
}), new _PageElasticsearchFieldPlugin.PageElasticsearchFieldPlugin({
|
|
31
|
+
field: "title",
|
|
32
|
+
path: "titleLC",
|
|
33
|
+
unmappedType: "text",
|
|
34
|
+
keyword: true,
|
|
35
|
+
searchable: true
|
|
36
|
+
}),
|
|
37
|
+
/**
|
|
38
|
+
* Defines all fields that are not strictly defined.
|
|
39
|
+
*/
|
|
40
|
+
new _PageElasticsearchFieldPlugin.PageElasticsearchFieldPlugin({
|
|
41
|
+
field: "*"
|
|
42
|
+
})];
|
|
43
|
+
|
|
44
|
+
exports.createPagesElasticsearchFields = createPagesElasticsearchFields;
|
|
45
|
+
|
|
46
|
+
const createPagesDynamoDbFields = () => {
|
|
47
|
+
return [new _PageDynamoDbElasticsearchFieldPlugin.PageDynamoDbElasticsearchFieldPlugin({
|
|
48
|
+
field: "version",
|
|
49
|
+
type: "number",
|
|
50
|
+
sortable: true
|
|
51
|
+
})];
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
exports.createPagesDynamoDbFields = createPagesDynamoDbFields;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createPagesElasticsearchFields","PageElasticsearchFieldPlugin","field","unmappedType","keyword","path","searchable","createPagesDynamoDbFields","PageDynamoDbElasticsearchFieldPlugin","type","sortable"],"sources":["fields.ts"],"sourcesContent":["import { PageElasticsearchFieldPlugin } from \"~/plugins/definitions/PageElasticsearchFieldPlugin\";\nimport { PageDynamoDbElasticsearchFieldPlugin } from \"~/plugins/definitions/PageDynamoDbElasticsearchFieldPlugin\";\n\nexport const createPagesElasticsearchFields = (): PageElasticsearchFieldPlugin[] => [\n new PageElasticsearchFieldPlugin({\n field: \"createdOn\",\n unmappedType: \"date\",\n keyword: false\n }),\n new PageElasticsearchFieldPlugin({\n field: \"savedOn\",\n unmappedType: \"date\",\n keyword: false\n }),\n new PageElasticsearchFieldPlugin({\n field: \"publishedOn\",\n unmappedType: \"date\",\n keyword: false\n }),\n new PageElasticsearchFieldPlugin({\n field: \"createdBy\",\n path: \"createdBy.id\"\n }),\n new PageElasticsearchFieldPlugin({\n field: \"ownedBy\",\n path: \"ownedBy.id\"\n }),\n new PageElasticsearchFieldPlugin({\n field: \"title\",\n path: \"titleLC\",\n unmappedType: \"text\",\n keyword: true,\n searchable: true\n }),\n /**\n * Defines all fields that are not strictly defined.\n */\n new PageElasticsearchFieldPlugin({\n field: \"*\"\n })\n];\n\nexport const createPagesDynamoDbFields = (): PageDynamoDbElasticsearchFieldPlugin[] => {\n return [\n new PageDynamoDbElasticsearchFieldPlugin({\n field: \"version\",\n type: \"number\",\n sortable: true\n })\n ];\n};\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEO,MAAMA,8BAA8B,GAAG,MAAsC,CAChF,IAAIC,0DAAJ,CAAiC;EAC7BC,KAAK,EAAE,WADsB;EAE7BC,YAAY,EAAE,MAFe;EAG7BC,OAAO,EAAE;AAHoB,CAAjC,CADgF,EAMhF,IAAIH,0DAAJ,CAAiC;EAC7BC,KAAK,EAAE,SADsB;EAE7BC,YAAY,EAAE,MAFe;EAG7BC,OAAO,EAAE;AAHoB,CAAjC,CANgF,EAWhF,IAAIH,0DAAJ,CAAiC;EAC7BC,KAAK,EAAE,aADsB;EAE7BC,YAAY,EAAE,MAFe;EAG7BC,OAAO,EAAE;AAHoB,CAAjC,CAXgF,EAgBhF,IAAIH,0DAAJ,CAAiC;EAC7BC,KAAK,EAAE,WADsB;EAE7BG,IAAI,EAAE;AAFuB,CAAjC,CAhBgF,EAoBhF,IAAIJ,0DAAJ,CAAiC;EAC7BC,KAAK,EAAE,SADsB;EAE7BG,IAAI,EAAE;AAFuB,CAAjC,CApBgF,EAwBhF,IAAIJ,0DAAJ,CAAiC;EAC7BC,KAAK,EAAE,OADsB;EAE7BG,IAAI,EAAE,SAFuB;EAG7BF,YAAY,EAAE,MAHe;EAI7BC,OAAO,EAAE,IAJoB;EAK7BE,UAAU,EAAE;AALiB,CAAjC,CAxBgF;AA+BhF;AACJ;AACA;AACI,IAAIL,0DAAJ,CAAiC;EAC7BC,KAAK,EAAE;AADsB,CAAjC,CAlCgF,CAA7E;;;;AAuCA,MAAMK,yBAAyB,GAAG,MAA8C;EACnF,OAAO,CACH,IAAIC,0EAAJ,CAAyC;IACrCN,KAAK,EAAE,SAD8B;IAErCO,IAAI,EAAE,QAF+B;IAGrCC,QAAQ,EAAE;EAH2B,CAAzC,CADG,CAAP;AAOH,CARM"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/// <reference types="lodash" />
|
|
2
|
+
import { Page } from "@webiny/api-page-builder/types";
|
|
3
|
+
import { PluginsContainer } from "@webiny/plugins";
|
|
4
|
+
/**
|
|
5
|
+
* Map our system fields to the Elasticsearch data.
|
|
6
|
+
* We need to add new fields if we add them into our system.
|
|
7
|
+
*/
|
|
8
|
+
export declare const getESPageData: (page: Page) => {
|
|
9
|
+
__type: string;
|
|
10
|
+
tenant: string;
|
|
11
|
+
webinyVersion: string;
|
|
12
|
+
id: string;
|
|
13
|
+
pid: string;
|
|
14
|
+
editor: string;
|
|
15
|
+
locale: string;
|
|
16
|
+
createdOn: string;
|
|
17
|
+
savedOn: string;
|
|
18
|
+
createdBy: import("@webiny/api-page-builder/types").CreatedBy;
|
|
19
|
+
ownedBy: import("@webiny/api-page-builder/types").CreatedBy;
|
|
20
|
+
category: string;
|
|
21
|
+
version: number;
|
|
22
|
+
title: string;
|
|
23
|
+
titleLC: string;
|
|
24
|
+
path: string;
|
|
25
|
+
status: import("@webiny/api-page-builder/types").PageStatus;
|
|
26
|
+
locked: boolean;
|
|
27
|
+
publishedOn: string | null;
|
|
28
|
+
tags: string[];
|
|
29
|
+
snippet: string | null;
|
|
30
|
+
images: {
|
|
31
|
+
general: import("lodash").FieldWithPossiblyUndefined<import("@webiny/api-page-builder/types").PageSettings | undefined, "general.image">;
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
export declare const getESLatestPageData: (plugins: PluginsContainer, page: Page) => Record<string, any>;
|
|
35
|
+
export declare const getESPublishedPageData: (plugins: PluginsContainer, page: Page) => Record<string, any>;
|