@webiny/api-page-builder-so-ddb-es 5.35.0 → 5.35.1

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 (40) hide show
  1. package/index.js +24 -16
  2. package/index.js.map +1 -1
  3. package/operations/blockCategory/dataLoader.d.ts +2 -1
  4. package/operations/blockCategory/dataLoader.js.map +1 -1
  5. package/operations/blockCategory/index.d.ts +1 -1
  6. package/operations/blockCategory/index.js +1 -0
  7. package/operations/blockCategory/index.js.map +1 -1
  8. package/operations/category/dataLoader.d.ts +2 -1
  9. package/operations/category/dataLoader.js.map +1 -1
  10. package/operations/category/index.d.ts +1 -1
  11. package/operations/category/index.js +1 -0
  12. package/operations/category/index.js.map +1 -1
  13. package/operations/pageBlock/dataLoader.d.ts +2 -1
  14. package/operations/pageBlock/dataLoader.js.map +1 -1
  15. package/operations/pageBlock/index.d.ts +1 -1
  16. package/operations/pageBlock/index.js +1 -0
  17. package/operations/pageBlock/index.js.map +1 -1
  18. package/operations/pageTemplate/dataLoader.d.ts +2 -1
  19. package/operations/pageTemplate/dataLoader.js.map +1 -1
  20. package/operations/pageTemplate/index.d.ts +1 -1
  21. package/operations/pageTemplate/index.js +1 -0
  22. package/operations/pageTemplate/index.js.map +1 -1
  23. package/package.json +40 -40
  24. package/types.d.ts +16 -1
  25. package/types.js.map +1 -1
  26. package/upgrades/index.d.ts +0 -2
  27. package/upgrades/index.js +0 -14
  28. package/upgrades/index.js.map +0 -1
  29. package/upgrades/v5.15.0/category.d.ts +0 -2
  30. package/upgrades/v5.15.0/category.js +0 -73
  31. package/upgrades/v5.15.0/category.js.map +0 -1
  32. package/upgrades/v5.15.0/index.d.ts +0 -4
  33. package/upgrades/v5.15.0/index.js +0 -52
  34. package/upgrades/v5.15.0/index.js.map +0 -1
  35. package/upgrades/v5.15.0/menu.d.ts +0 -2
  36. package/upgrades/v5.15.0/menu.js +0 -73
  37. package/upgrades/v5.15.0/menu.js.map +0 -1
  38. package/upgrades/v5.15.0/pageElement.d.ts +0 -2
  39. package/upgrades/v5.15.0/pageElement.js +0 -73
  40. package/upgrades/v5.15.0/pageElement.js.map +0 -1
package/index.js CHANGED
@@ -167,6 +167,22 @@ const createStorageOperations = params => {
167
167
  attributes: attributes ? attributes[_types.ENTITIES.PAGE_TEMPLATES] : {}
168
168
  })
169
169
  };
170
+ const categories = (0, _category.createCategoryStorageOperations)({
171
+ entity: entities.categories,
172
+ plugins
173
+ });
174
+ const blockCategories = (0, _blockCategory.createBlockCategoryStorageOperations)({
175
+ entity: entities.blockCategories,
176
+ plugins
177
+ });
178
+ const pageBlocks = (0, _pageBlock.createPageBlockStorageOperations)({
179
+ entity: entities.pageBlocks,
180
+ plugins
181
+ });
182
+ const pageTemplates = (0, _pageTemplate.createPageTemplateStorageOperations)({
183
+ entity: entities.pageTemplates,
184
+ plugins
185
+ });
170
186
  return {
171
187
  beforeInit: async context => {
172
188
  const types = [
@@ -177,6 +193,10 @@ const createStorageOperations = params => {
177
193
  for (const type of types) {
178
194
  plugins.mergeByType(context.plugins, type);
179
195
  }
196
+ pageTemplates.dataLoader.clear();
197
+ pageBlocks.dataLoader.clear();
198
+ blockCategories.dataLoader.clear();
199
+ categories.dataLoader.clear();
180
200
  },
181
201
  init: async context => {
182
202
  context.i18n.locales.onLocaleBeforeCreate.subscribe(async ({
@@ -200,10 +220,6 @@ const createStorageOperations = params => {
200
220
  settings: (0, _settings.createSettingsStorageOperations)({
201
221
  entity: entities.settings
202
222
  }),
203
- categories: (0, _category.createCategoryStorageOperations)({
204
- entity: entities.categories,
205
- plugins
206
- }),
207
223
  menus: (0, _menu.createMenuStorageOperations)({
208
224
  entity: entities.menus,
209
225
  plugins
@@ -218,18 +234,10 @@ const createStorageOperations = params => {
218
234
  elasticsearch,
219
235
  plugins
220
236
  }),
221
- blockCategories: (0, _blockCategory.createBlockCategoryStorageOperations)({
222
- entity: entities.blockCategories,
223
- plugins
224
- }),
225
- pageBlocks: (0, _pageBlock.createPageBlockStorageOperations)({
226
- entity: entities.pageBlocks,
227
- plugins
228
- }),
229
- pageTemplates: (0, _pageTemplate.createPageTemplateStorageOperations)({
230
- entity: entities.pageTemplates,
231
- plugins
232
- })
237
+ categories,
238
+ blockCategories,
239
+ pageBlocks,
240
+ pageTemplates
233
241
  };
234
242
  };
235
243
  exports.createStorageOperations = createStorageOperations;
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["createStorageOperations","params","documentClient","elasticsearch","table","esTable","attributes","plugins","userPlugins","tableInstance","createTable","tableElasticsearchInstance","createElasticsearchTable","PluginsContainer","dynamoDbValueFilters","createCategoryDynamoDbFields","createMenuDynamoDbFields","createPageElementDynamoDbFields","createPagesElasticsearchFields","createPagesDynamoDbFields","elasticsearchIndexPlugins","createBlockCategoryDynamoDbFields","createPageBlockDynamoDbFields","createPageTemplateDynamoDbFields","entities","settings","createSettingsEntity","entityName","ENTITIES","SETTINGS","system","createSystemEntity","SYSTEM","categories","createCategoryEntity","CATEGORIES","menus","createMenuEntity","MENUS","pageElements","createPageElementEntity","PAGE_ELEMENTS","pages","createPageEntity","PAGES","pagesEs","createPageElasticsearchEntity","PAGES_ES","blockCategories","createBlockCategoryEntity","BLOCK_CATEGORIES","pageBlocks","createPageBlockEntity","PAGE_BLOCKS","pageTemplates","createPageTemplateEntity","PAGE_TEMPLATES","beforeInit","context","types","CompressionPlugin","type","ElasticsearchQueryBuilderOperatorPlugin","BlockCategoryDynamoDbElasticFieldPlugin","CategoryDynamoDbElasticFieldPlugin","IndexPageDataPlugin","MenuDynamoDbElasticFieldPlugin","PageBlockDynamoDbFieldPlugin","PageDynamoDbElasticsearchFieldPlugin","PageElasticsearchBodyModifierPlugin","PageElasticsearchFieldPlugin","PageElasticsearchIndexPlugin","PageElasticsearchQueryModifierPlugin","PageElasticsearchSortModifierPlugin","PageElementDynamoDbElasticFieldPlugin","SearchLatestPagesPlugin","SearchPagesPlugin","SearchPublishedPagesPlugin","mergeByType","init","i18n","locales","onLocaleBeforeCreate","subscribe","locale","tenant","createElasticsearchIndex","code","getEntities","getTable","getEsTable","createSystemStorageOperations","entity","createSettingsStorageOperations","createCategoryStorageOperations","createMenuStorageOperations","createPageElementStorageOperations","createPageStorageOperations","esEntity","createBlockCategoryStorageOperations","createPageBlockStorageOperations","createPageTemplateStorageOperations"],"sources":["index.ts"],"sourcesContent":["import dynamoDbValueFilters from \"@webiny/db-dynamodb/plugins/filters\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport {\n CompressionPlugin,\n ElasticsearchQueryBuilderOperatorPlugin\n} from \"@webiny/api-elasticsearch\";\n\nimport { ENTITIES, StorageOperationsFactory } from \"~/types\";\nimport { createTable } from \"~/definitions/table\";\nimport { createElasticsearchTable } from \"~/definitions/tableElasticsearch\";\nimport { elasticsearchIndexPlugins } from \"~/elasticsearch/indices\";\nimport { createElasticsearchIndex } from \"~/elasticsearch/createElasticsearchIndex\";\n\nimport { createCategoryEntity } from \"~/definitions/categoryEntity\";\nimport { createCategoryDynamoDbFields } from \"~/operations/category/fields\";\nimport { createCategoryStorageOperations } from \"~/operations/category\";\n\nimport { createMenuEntity } from \"~/definitions/menuEntity\";\nimport { createMenuDynamoDbFields } from \"~/operations/menu/fields\";\nimport { createMenuStorageOperations } from \"~/operations/menu\";\n\nimport { createPageElementEntity } from \"~/definitions/pageElementEntity\";\nimport { createPageElementDynamoDbFields } from \"~/operations/pageElement/fields\";\nimport { createPageElementStorageOperations } from \"~/operations/pageElement\";\n\nimport { createSettingsEntity } from \"~/definitions/settingsEntity\";\nimport { createSettingsStorageOperations } from \"~/operations/settings\";\n\nimport { createSystemEntity } from \"~/definitions/systemEntity\";\nimport { createSystemStorageOperations } from \"~/operations/system\";\n\nimport { createPageEntity } from \"~/definitions/pageEntity\";\nimport {\n createPagesElasticsearchFields,\n createPagesDynamoDbFields\n} from \"~/operations/pages/fields\";\nimport { createPageStorageOperations } from \"~/operations/pages\";\nimport { createPageElasticsearchEntity } from \"~/definitions/pageElasticsearchEntity\";\n\nimport { createBlockCategoryEntity } from \"~/definitions/blockCategoryEntity\";\nimport { createBlockCategoryDynamoDbFields } from \"~/operations/blockCategory/fields\";\nimport { createBlockCategoryStorageOperations } from \"~/operations/blockCategory\";\n\nimport { createPageBlockEntity } from \"~/definitions/pageBlockEntity\";\nimport { createPageBlockDynamoDbFields } from \"~/operations/pageBlock/fields\";\nimport { createPageBlockStorageOperations } from \"~/operations/pageBlock\";\n\nimport { createPageTemplateEntity } from \"~/definitions/pageTemplateEntity\";\nimport { createPageTemplateDynamoDbFields } from \"~/operations/pageTemplate/fields\";\nimport { createPageTemplateStorageOperations } from \"~/operations/pageTemplate\";\n\nimport { PbContext } from \"@webiny/api-page-builder/types\";\nimport {\n BlockCategoryDynamoDbElasticFieldPlugin,\n CategoryDynamoDbElasticFieldPlugin,\n IndexPageDataPlugin,\n MenuDynamoDbElasticFieldPlugin,\n PageBlockDynamoDbFieldPlugin,\n PageDynamoDbElasticsearchFieldPlugin,\n PageElasticsearchBodyModifierPlugin,\n PageElasticsearchFieldPlugin,\n PageElasticsearchIndexPlugin,\n PageElasticsearchQueryModifierPlugin,\n PageElasticsearchSortModifierPlugin,\n PageElementDynamoDbElasticFieldPlugin,\n SearchLatestPagesPlugin,\n SearchPagesPlugin,\n SearchPublishedPagesPlugin\n} from \"./plugins\";\n\nexport * from \"./plugins\";\n\nexport const createStorageOperations: StorageOperationsFactory = params => {\n const {\n documentClient,\n elasticsearch,\n table,\n esTable,\n attributes,\n plugins: userPlugins\n } = params;\n\n const tableInstance = createTable({\n table,\n documentClient\n });\n const tableElasticsearchInstance = createElasticsearchTable({\n table: esTable,\n documentClient\n });\n\n const plugins = new PluginsContainer([\n /**\n * User defined custom plugins.\n */\n ...(userPlugins || []),\n /**\n * DynamoDB filter plugins for the where conditions.\n */\n dynamoDbValueFilters(),\n /**\n * Category fields required for filtering/sorting.\n */\n createCategoryDynamoDbFields(),\n /**\n * Menu fields required for filtering/sorting.\n */\n createMenuDynamoDbFields(),\n /**\n * Page element fields required for filtering/sorting.\n */\n createPageElementDynamoDbFields(),\n /**\n * Page fields required for filtering/sorting.\n */\n createPagesElasticsearchFields(),\n /**\n * Page fields required for filtering/sorting when using dynamodb.\n */\n createPagesDynamoDbFields(),\n /**\n * Built-in Elasticsearch index templates\n */\n elasticsearchIndexPlugins(),\n /**\n * Block Category fields required for filtering/sorting.\n */\n createBlockCategoryDynamoDbFields(),\n /**\n * Page Block fields required for filtering/sorting.\n */\n createPageBlockDynamoDbFields(),\n /**\n * Page Template fields required for filtering/sorting.\n */\n createPageTemplateDynamoDbFields()\n ]);\n\n const entities = {\n settings: createSettingsEntity({\n entityName: ENTITIES.SETTINGS,\n table: tableInstance\n }),\n system: createSystemEntity({\n entityName: ENTITIES.SYSTEM,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.SYSTEM] : {}\n }),\n categories: createCategoryEntity({\n entityName: ENTITIES.CATEGORIES,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.CATEGORIES] : {}\n }),\n menus: createMenuEntity({\n entityName: ENTITIES.MENUS,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.MENUS] : {}\n }),\n pageElements: createPageElementEntity({\n entityName: ENTITIES.PAGE_ELEMENTS,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.PAGE_ELEMENTS] : {}\n }),\n pages: createPageEntity({\n entityName: ENTITIES.PAGES,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.PAGES] : {}\n }),\n pagesEs: createPageElasticsearchEntity({\n entityName: ENTITIES.PAGES_ES,\n table: tableElasticsearchInstance,\n attributes: attributes ? attributes[ENTITIES.PAGES_ES] : {}\n }),\n blockCategories: createBlockCategoryEntity({\n entityName: ENTITIES.BLOCK_CATEGORIES,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.BLOCK_CATEGORIES] : {}\n }),\n pageBlocks: createPageBlockEntity({\n entityName: ENTITIES.PAGE_BLOCKS,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.PAGE_BLOCKS] : {}\n }),\n pageTemplates: createPageTemplateEntity({\n entityName: ENTITIES.PAGE_TEMPLATES,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.PAGE_TEMPLATES] : {}\n })\n };\n\n return {\n beforeInit: async (context: PbContext) => {\n const types: string[] = [\n // Elasticsearch\n CompressionPlugin.type,\n ElasticsearchQueryBuilderOperatorPlugin.type,\n // Page Builder\n BlockCategoryDynamoDbElasticFieldPlugin.type,\n CategoryDynamoDbElasticFieldPlugin.type,\n IndexPageDataPlugin.type,\n MenuDynamoDbElasticFieldPlugin.type,\n PageBlockDynamoDbFieldPlugin.type,\n PageDynamoDbElasticsearchFieldPlugin.type,\n PageElasticsearchBodyModifierPlugin.type,\n PageElasticsearchFieldPlugin.type,\n PageElasticsearchIndexPlugin.type,\n PageElasticsearchQueryModifierPlugin.type,\n PageElasticsearchSortModifierPlugin.type,\n PageElementDynamoDbElasticFieldPlugin.type,\n SearchLatestPagesPlugin.type,\n SearchPagesPlugin.type,\n SearchPublishedPagesPlugin.type\n ];\n for (const type of types) {\n plugins.mergeByType(context.plugins, type);\n }\n },\n init: async (context: PbContext) => {\n context.i18n.locales.onLocaleBeforeCreate.subscribe(async ({ locale, tenant }) => {\n await createElasticsearchIndex({\n elasticsearch,\n plugins,\n locale: locale.code,\n tenant\n });\n });\n },\n getEntities: () => entities,\n getTable: () => tableInstance,\n getEsTable: () => tableElasticsearchInstance,\n system: createSystemStorageOperations({\n entity: entities.system\n }),\n settings: createSettingsStorageOperations({\n entity: entities.settings\n }),\n categories: createCategoryStorageOperations({\n entity: entities.categories,\n plugins\n }),\n menus: createMenuStorageOperations({\n entity: entities.menus,\n plugins\n }),\n pageElements: createPageElementStorageOperations({\n entity: entities.pageElements,\n plugins\n }),\n pages: createPageStorageOperations({\n entity: entities.pages,\n esEntity: entities.pagesEs,\n elasticsearch,\n plugins\n }),\n blockCategories: createBlockCategoryStorageOperations({\n entity: entities.blockCategories,\n plugins\n }),\n pageBlocks: createPageBlockStorageOperations({\n entity: entities.pageBlocks,\n plugins\n }),\n pageTemplates: createPageTemplateStorageOperations({\n entity: entities.pageTemplates,\n plugins\n })\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["createStorageOperations","params","documentClient","elasticsearch","table","esTable","attributes","plugins","userPlugins","tableInstance","createTable","tableElasticsearchInstance","createElasticsearchTable","PluginsContainer","dynamoDbValueFilters","createCategoryDynamoDbFields","createMenuDynamoDbFields","createPageElementDynamoDbFields","createPagesElasticsearchFields","createPagesDynamoDbFields","elasticsearchIndexPlugins","createBlockCategoryDynamoDbFields","createPageBlockDynamoDbFields","createPageTemplateDynamoDbFields","entities","settings","createSettingsEntity","entityName","ENTITIES","SETTINGS","system","createSystemEntity","SYSTEM","categories","createCategoryEntity","CATEGORIES","menus","createMenuEntity","MENUS","pageElements","createPageElementEntity","PAGE_ELEMENTS","pages","createPageEntity","PAGES","pagesEs","createPageElasticsearchEntity","PAGES_ES","blockCategories","createBlockCategoryEntity","BLOCK_CATEGORIES","pageBlocks","createPageBlockEntity","PAGE_BLOCKS","pageTemplates","createPageTemplateEntity","PAGE_TEMPLATES","createCategoryStorageOperations","entity","createBlockCategoryStorageOperations","createPageBlockStorageOperations","createPageTemplateStorageOperations","beforeInit","context","types","CompressionPlugin","type","ElasticsearchQueryBuilderOperatorPlugin","BlockCategoryDynamoDbElasticFieldPlugin","CategoryDynamoDbElasticFieldPlugin","IndexPageDataPlugin","MenuDynamoDbElasticFieldPlugin","PageBlockDynamoDbFieldPlugin","PageDynamoDbElasticsearchFieldPlugin","PageElasticsearchBodyModifierPlugin","PageElasticsearchFieldPlugin","PageElasticsearchIndexPlugin","PageElasticsearchQueryModifierPlugin","PageElasticsearchSortModifierPlugin","PageElementDynamoDbElasticFieldPlugin","SearchLatestPagesPlugin","SearchPagesPlugin","SearchPublishedPagesPlugin","mergeByType","dataLoader","clear","init","i18n","locales","onLocaleBeforeCreate","subscribe","locale","tenant","createElasticsearchIndex","code","getEntities","getTable","getEsTable","createSystemStorageOperations","createSettingsStorageOperations","createMenuStorageOperations","createPageElementStorageOperations","createPageStorageOperations","esEntity"],"sources":["index.ts"],"sourcesContent":["import dynamoDbValueFilters from \"@webiny/db-dynamodb/plugins/filters\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport {\n CompressionPlugin,\n ElasticsearchQueryBuilderOperatorPlugin\n} from \"@webiny/api-elasticsearch\";\n\nimport { ENTITIES, StorageOperationsFactory } from \"~/types\";\nimport { createTable } from \"~/definitions/table\";\nimport { createElasticsearchTable } from \"~/definitions/tableElasticsearch\";\nimport { elasticsearchIndexPlugins } from \"~/elasticsearch/indices\";\nimport { createElasticsearchIndex } from \"~/elasticsearch/createElasticsearchIndex\";\n\nimport { createCategoryEntity } from \"~/definitions/categoryEntity\";\nimport { createCategoryDynamoDbFields } from \"~/operations/category/fields\";\nimport { createCategoryStorageOperations } from \"~/operations/category\";\n\nimport { createMenuEntity } from \"~/definitions/menuEntity\";\nimport { createMenuDynamoDbFields } from \"~/operations/menu/fields\";\nimport { createMenuStorageOperations } from \"~/operations/menu\";\n\nimport { createPageElementEntity } from \"~/definitions/pageElementEntity\";\nimport { createPageElementDynamoDbFields } from \"~/operations/pageElement/fields\";\nimport { createPageElementStorageOperations } from \"~/operations/pageElement\";\n\nimport { createSettingsEntity } from \"~/definitions/settingsEntity\";\nimport { createSettingsStorageOperations } from \"~/operations/settings\";\n\nimport { createSystemEntity } from \"~/definitions/systemEntity\";\nimport { createSystemStorageOperations } from \"~/operations/system\";\n\nimport { createPageEntity } from \"~/definitions/pageEntity\";\nimport {\n createPagesDynamoDbFields,\n createPagesElasticsearchFields\n} from \"~/operations/pages/fields\";\nimport { createPageStorageOperations } from \"~/operations/pages\";\nimport { createPageElasticsearchEntity } from \"~/definitions/pageElasticsearchEntity\";\n\nimport { createBlockCategoryEntity } from \"~/definitions/blockCategoryEntity\";\nimport { createBlockCategoryDynamoDbFields } from \"~/operations/blockCategory/fields\";\nimport { createBlockCategoryStorageOperations } from \"~/operations/blockCategory\";\n\nimport { createPageBlockEntity } from \"~/definitions/pageBlockEntity\";\nimport { createPageBlockDynamoDbFields } from \"~/operations/pageBlock/fields\";\nimport { createPageBlockStorageOperations } from \"~/operations/pageBlock\";\n\nimport { createPageTemplateEntity } from \"~/definitions/pageTemplateEntity\";\nimport { createPageTemplateDynamoDbFields } from \"~/operations/pageTemplate/fields\";\nimport { createPageTemplateStorageOperations } from \"~/operations/pageTemplate\";\n\nimport { PbContext } from \"@webiny/api-page-builder/types\";\nimport {\n BlockCategoryDynamoDbElasticFieldPlugin,\n CategoryDynamoDbElasticFieldPlugin,\n IndexPageDataPlugin,\n MenuDynamoDbElasticFieldPlugin,\n PageBlockDynamoDbFieldPlugin,\n PageDynamoDbElasticsearchFieldPlugin,\n PageElasticsearchBodyModifierPlugin,\n PageElasticsearchFieldPlugin,\n PageElasticsearchIndexPlugin,\n PageElasticsearchQueryModifierPlugin,\n PageElasticsearchSortModifierPlugin,\n PageElementDynamoDbElasticFieldPlugin,\n SearchLatestPagesPlugin,\n SearchPagesPlugin,\n SearchPublishedPagesPlugin\n} from \"./plugins\";\n\nexport * from \"./plugins\";\n\nexport const createStorageOperations: StorageOperationsFactory = params => {\n const {\n documentClient,\n elasticsearch,\n table,\n esTable,\n attributes,\n plugins: userPlugins\n } = params;\n\n const tableInstance = createTable({\n table,\n documentClient\n });\n const tableElasticsearchInstance = createElasticsearchTable({\n table: esTable,\n documentClient\n });\n\n const plugins = new PluginsContainer([\n /**\n * User defined custom plugins.\n */\n ...(userPlugins || []),\n /**\n * DynamoDB filter plugins for the where conditions.\n */\n dynamoDbValueFilters(),\n /**\n * Category fields required for filtering/sorting.\n */\n createCategoryDynamoDbFields(),\n /**\n * Menu fields required for filtering/sorting.\n */\n createMenuDynamoDbFields(),\n /**\n * Page element fields required for filtering/sorting.\n */\n createPageElementDynamoDbFields(),\n /**\n * Page fields required for filtering/sorting.\n */\n createPagesElasticsearchFields(),\n /**\n * Page fields required for filtering/sorting when using dynamodb.\n */\n createPagesDynamoDbFields(),\n /**\n * Built-in Elasticsearch index templates\n */\n elasticsearchIndexPlugins(),\n /**\n * Block Category fields required for filtering/sorting.\n */\n createBlockCategoryDynamoDbFields(),\n /**\n * Page Block fields required for filtering/sorting.\n */\n createPageBlockDynamoDbFields(),\n /**\n * Page Template fields required for filtering/sorting.\n */\n createPageTemplateDynamoDbFields()\n ]);\n\n const entities = {\n settings: createSettingsEntity({\n entityName: ENTITIES.SETTINGS,\n table: tableInstance\n }),\n system: createSystemEntity({\n entityName: ENTITIES.SYSTEM,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.SYSTEM] : {}\n }),\n categories: createCategoryEntity({\n entityName: ENTITIES.CATEGORIES,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.CATEGORIES] : {}\n }),\n menus: createMenuEntity({\n entityName: ENTITIES.MENUS,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.MENUS] : {}\n }),\n pageElements: createPageElementEntity({\n entityName: ENTITIES.PAGE_ELEMENTS,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.PAGE_ELEMENTS] : {}\n }),\n pages: createPageEntity({\n entityName: ENTITIES.PAGES,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.PAGES] : {}\n }),\n pagesEs: createPageElasticsearchEntity({\n entityName: ENTITIES.PAGES_ES,\n table: tableElasticsearchInstance,\n attributes: attributes ? attributes[ENTITIES.PAGES_ES] : {}\n }),\n blockCategories: createBlockCategoryEntity({\n entityName: ENTITIES.BLOCK_CATEGORIES,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.BLOCK_CATEGORIES] : {}\n }),\n pageBlocks: createPageBlockEntity({\n entityName: ENTITIES.PAGE_BLOCKS,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.PAGE_BLOCKS] : {}\n }),\n pageTemplates: createPageTemplateEntity({\n entityName: ENTITIES.PAGE_TEMPLATES,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.PAGE_TEMPLATES] : {}\n })\n };\n\n const categories = createCategoryStorageOperations({\n entity: entities.categories,\n plugins\n });\n const blockCategories = createBlockCategoryStorageOperations({\n entity: entities.blockCategories,\n plugins\n });\n const pageBlocks = createPageBlockStorageOperations({\n entity: entities.pageBlocks,\n plugins\n });\n const pageTemplates = createPageTemplateStorageOperations({\n entity: entities.pageTemplates,\n plugins\n });\n\n return {\n beforeInit: async (context: PbContext) => {\n const types: string[] = [\n // Elasticsearch\n CompressionPlugin.type,\n ElasticsearchQueryBuilderOperatorPlugin.type,\n // Page Builder\n BlockCategoryDynamoDbElasticFieldPlugin.type,\n CategoryDynamoDbElasticFieldPlugin.type,\n IndexPageDataPlugin.type,\n MenuDynamoDbElasticFieldPlugin.type,\n PageBlockDynamoDbFieldPlugin.type,\n PageDynamoDbElasticsearchFieldPlugin.type,\n PageElasticsearchBodyModifierPlugin.type,\n PageElasticsearchFieldPlugin.type,\n PageElasticsearchIndexPlugin.type,\n PageElasticsearchQueryModifierPlugin.type,\n PageElasticsearchSortModifierPlugin.type,\n PageElementDynamoDbElasticFieldPlugin.type,\n SearchLatestPagesPlugin.type,\n SearchPagesPlugin.type,\n SearchPublishedPagesPlugin.type\n ];\n for (const type of types) {\n plugins.mergeByType(context.plugins, type);\n }\n pageTemplates.dataLoader.clear();\n pageBlocks.dataLoader.clear();\n blockCategories.dataLoader.clear();\n categories.dataLoader.clear();\n },\n init: async (context: PbContext) => {\n context.i18n.locales.onLocaleBeforeCreate.subscribe(async ({ locale, tenant }) => {\n await createElasticsearchIndex({\n elasticsearch,\n plugins,\n locale: locale.code,\n tenant\n });\n });\n },\n getEntities: () => entities,\n getTable: () => tableInstance,\n getEsTable: () => tableElasticsearchInstance,\n system: createSystemStorageOperations({\n entity: entities.system\n }),\n settings: createSettingsStorageOperations({\n entity: entities.settings\n }),\n menus: createMenuStorageOperations({\n entity: entities.menus,\n plugins\n }),\n pageElements: createPageElementStorageOperations({\n entity: entities.pageElements,\n plugins\n }),\n pages: createPageStorageOperations({\n entity: entities.pages,\n esEntity: entities.pagesEs,\n elasticsearch,\n plugins\n }),\n categories,\n blockCategories,\n pageBlocks,\n pageTemplates\n };\n};\n"],"mappings":"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"}
@@ -1,10 +1,11 @@
1
1
  import { BlockCategory } from "@webiny/api-page-builder/types";
2
2
  import { Entity } from "dynamodb-toolbox";
3
+ import { DataLoaderInterface } from "../../types";
3
4
  interface Params {
4
5
  entity: Entity<any>;
5
6
  }
6
7
  declare type DataLoaderGetItem = Pick<BlockCategory, "slug" | "tenant" | "locale">;
7
- export declare class BlockCategoryDataLoader {
8
+ export declare class BlockCategoryDataLoader implements DataLoaderInterface {
8
9
  private _getDataLoader;
9
10
  private readonly entity;
10
11
  constructor(params: Params);
@@ -1 +1 @@
1
- {"version":3,"names":["BlockCategoryDataLoader","constructor","params","undefined","entity","getOne","item","getDataLoader","load","getAll","items","loadMany","clear","clearAll","_getDataLoader","cacheKeyFn","key","tenant","locale","slug","DataLoader","batched","map","getBatch","PK","createPartitionKey","SK","createSortKey","records","batchReadAll","table","results","reduce","collection","result","cleanupItem"],"sources":["dataLoader.ts"],"sourcesContent":["import DataLoader from \"dataloader\";\nimport { batchReadAll } from \"@webiny/db-dynamodb/utils/batchRead\";\nimport { BlockCategory } from \"@webiny/api-page-builder/types\";\nimport { cleanupItem } from \"@webiny/db-dynamodb/utils/cleanup\";\nimport { Entity } from \"dynamodb-toolbox\";\nimport { createPartitionKey, createSortKey } from \"./keys\";\n\ninterface Params {\n entity: Entity<any>;\n}\n\ntype DataLoaderGetItem = Pick<BlockCategory, \"slug\" | \"tenant\" | \"locale\">;\n\nexport class BlockCategoryDataLoader {\n private _getDataLoader: DataLoader<any, any> | undefined = undefined;\n\n private readonly entity: Entity<any>;\n\n constructor(params: Params) {\n this.entity = params.entity;\n }\n\n public async getOne(item: DataLoaderGetItem): Promise<BlockCategory> {\n return await this.getDataLoader().load(item);\n }\n\n public async getAll(items: DataLoaderGetItem[]): Promise<BlockCategory[]> {\n return await this.getDataLoader().loadMany(items);\n }\n\n public clear(): void {\n this.getDataLoader().clearAll();\n }\n\n private getDataLoader(): DataLoader<any, any> {\n if (!this._getDataLoader) {\n const cacheKeyFn = (key: DataLoaderGetItem) => {\n return `T#${key.tenant}#L#${key.locale}#${key.slug}`;\n };\n this._getDataLoader = new DataLoader(\n async items => {\n const batched = items.map(item => {\n return this.entity.getBatch({\n PK: createPartitionKey(item),\n SK: createSortKey(item)\n });\n });\n\n const records = await batchReadAll<BlockCategory>({\n table: this.entity.table,\n items: batched\n });\n\n const results = records.reduce((collection, result) => {\n if (!result) {\n return collection;\n }\n const key = cacheKeyFn(result);\n collection[key] = cleanupItem(this.entity, result) as BlockCategory;\n return collection;\n }, {} as Record<string, BlockCategory>);\n return items.map(item => {\n const key = cacheKeyFn(item);\n return results[key] || null;\n });\n },\n {\n cacheKeyFn\n }\n );\n }\n return this._getDataLoader;\n }\n}\n"],"mappings":";;;;;;;;AAAA;AACA;AAEA;AAEA;AAQO,MAAMA,uBAAuB,CAAC;EAKjCC,WAAW,CAACC,MAAc,EAAE;IAAA,sDAJ+BC,SAAS;IAAA;IAKhE,IAAI,CAACC,MAAM,GAAGF,MAAM,CAACE,MAAM;EAC/B;EAEA,MAAaC,MAAM,CAACC,IAAuB,EAA0B;IACjE,OAAO,MAAM,IAAI,CAACC,aAAa,EAAE,CAACC,IAAI,CAACF,IAAI,CAAC;EAChD;EAEA,MAAaG,MAAM,CAACC,KAA0B,EAA4B;IACtE,OAAO,MAAM,IAAI,CAACH,aAAa,EAAE,CAACI,QAAQ,CAACD,KAAK,CAAC;EACrD;EAEOE,KAAK,GAAS;IACjB,IAAI,CAACL,aAAa,EAAE,CAACM,QAAQ,EAAE;EACnC;EAEQN,aAAa,GAAyB;IAC1C,IAAI,CAAC,IAAI,CAACO,cAAc,EAAE;MACtB,MAAMC,UAAU,GAAIC,GAAsB,IAAK;QAC3C,OAAQ,KAAIA,GAAG,CAACC,MAAO,MAAKD,GAAG,CAACE,MAAO,IAAGF,GAAG,CAACG,IAAK,EAAC;MACxD,CAAC;MACD,IAAI,CAACL,cAAc,GAAG,IAAIM,mBAAU,CAChC,MAAMV,KAAK,IAAI;QACX,MAAMW,OAAO,GAAGX,KAAK,CAACY,GAAG,CAAChB,IAAI,IAAI;UAC9B,OAAO,IAAI,CAACF,MAAM,CAACmB,QAAQ,CAAC;YACxBC,EAAE,EAAE,IAAAC,wBAAkB,EAACnB,IAAI,CAAC;YAC5BoB,EAAE,EAAE,IAAAC,mBAAa,EAACrB,IAAI;UAC1B,CAAC,CAAC;QACN,CAAC,CAAC;QAEF,MAAMsB,OAAO,GAAG,MAAM,IAAAC,uBAAY,EAAgB;UAC9CC,KAAK,EAAE,IAAI,CAAC1B,MAAM,CAAC0B,KAAK;UACxBpB,KAAK,EAAEW;QACX,CAAC,CAAC;QAEF,MAAMU,OAAO,GAAGH,OAAO,CAACI,MAAM,CAAC,CAACC,UAAU,EAAEC,MAAM,KAAK;UACnD,IAAI,CAACA,MAAM,EAAE;YACT,OAAOD,UAAU;UACrB;UACA,MAAMjB,GAAG,GAAGD,UAAU,CAACmB,MAAM,CAAC;UAC9BD,UAAU,CAACjB,GAAG,CAAC,GAAG,IAAAmB,oBAAW,EAAC,IAAI,CAAC/B,MAAM,EAAE8B,MAAM,CAAkB;UACnE,OAAOD,UAAU;QACrB,CAAC,EAAE,CAAC,CAAC,CAAkC;QACvC,OAAOvB,KAAK,CAACY,GAAG,CAAChB,IAAI,IAAI;UACrB,MAAMU,GAAG,GAAGD,UAAU,CAACT,IAAI,CAAC;UAC5B,OAAOyB,OAAO,CAACf,GAAG,CAAC,IAAI,IAAI;QAC/B,CAAC,CAAC;MACN,CAAC,EACD;QACID;MACJ,CAAC,CACJ;IACL;IACA,OAAO,IAAI,CAACD,cAAc;EAC9B;AACJ;AAAC"}
1
+ {"version":3,"names":["BlockCategoryDataLoader","constructor","params","undefined","entity","getOne","item","getDataLoader","load","getAll","items","loadMany","clear","clearAll","_getDataLoader","cacheKeyFn","key","tenant","locale","slug","DataLoader","batched","map","getBatch","PK","createPartitionKey","SK","createSortKey","records","batchReadAll","table","results","reduce","collection","result","cleanupItem"],"sources":["dataLoader.ts"],"sourcesContent":["import DataLoader from \"dataloader\";\nimport { batchReadAll } from \"@webiny/db-dynamodb/utils/batchRead\";\nimport { BlockCategory } from \"@webiny/api-page-builder/types\";\nimport { cleanupItem } from \"@webiny/db-dynamodb/utils/cleanup\";\nimport { Entity } from \"dynamodb-toolbox\";\nimport { createPartitionKey, createSortKey } from \"./keys\";\nimport { DataLoaderInterface } from \"~/types\";\n\ninterface Params {\n entity: Entity<any>;\n}\n\ntype DataLoaderGetItem = Pick<BlockCategory, \"slug\" | \"tenant\" | \"locale\">;\n\nexport class BlockCategoryDataLoader implements DataLoaderInterface {\n private _getDataLoader: DataLoader<any, any> | undefined = undefined;\n\n private readonly entity: Entity<any>;\n\n constructor(params: Params) {\n this.entity = params.entity;\n }\n\n public async getOne(item: DataLoaderGetItem): Promise<BlockCategory> {\n return await this.getDataLoader().load(item);\n }\n\n public async getAll(items: DataLoaderGetItem[]): Promise<BlockCategory[]> {\n return await this.getDataLoader().loadMany(items);\n }\n\n public clear(): void {\n this.getDataLoader().clearAll();\n }\n\n private getDataLoader(): DataLoader<any, any> {\n if (!this._getDataLoader) {\n const cacheKeyFn = (key: DataLoaderGetItem) => {\n return `T#${key.tenant}#L#${key.locale}#${key.slug}`;\n };\n this._getDataLoader = new DataLoader(\n async items => {\n const batched = items.map(item => {\n return this.entity.getBatch({\n PK: createPartitionKey(item),\n SK: createSortKey(item)\n });\n });\n\n const records = await batchReadAll<BlockCategory>({\n table: this.entity.table,\n items: batched\n });\n\n const results = records.reduce((collection, result) => {\n if (!result) {\n return collection;\n }\n const key = cacheKeyFn(result);\n collection[key] = cleanupItem(this.entity, result) as BlockCategory;\n return collection;\n }, {} as Record<string, BlockCategory>);\n return items.map(item => {\n const key = cacheKeyFn(item);\n return results[key] || null;\n });\n },\n {\n cacheKeyFn\n }\n );\n }\n return this._getDataLoader;\n }\n}\n"],"mappings":";;;;;;;;AAAA;AACA;AAEA;AAEA;AASO,MAAMA,uBAAuB,CAAgC;EAKhEC,WAAW,CAACC,MAAc,EAAE;IAAA,sDAJ+BC,SAAS;IAAA;IAKhE,IAAI,CAACC,MAAM,GAAGF,MAAM,CAACE,MAAM;EAC/B;EAEA,MAAaC,MAAM,CAACC,IAAuB,EAA0B;IACjE,OAAO,MAAM,IAAI,CAACC,aAAa,EAAE,CAACC,IAAI,CAACF,IAAI,CAAC;EAChD;EAEA,MAAaG,MAAM,CAACC,KAA0B,EAA4B;IACtE,OAAO,MAAM,IAAI,CAACH,aAAa,EAAE,CAACI,QAAQ,CAACD,KAAK,CAAC;EACrD;EAEOE,KAAK,GAAS;IACjB,IAAI,CAACL,aAAa,EAAE,CAACM,QAAQ,EAAE;EACnC;EAEQN,aAAa,GAAyB;IAC1C,IAAI,CAAC,IAAI,CAACO,cAAc,EAAE;MACtB,MAAMC,UAAU,GAAIC,GAAsB,IAAK;QAC3C,OAAQ,KAAIA,GAAG,CAACC,MAAO,MAAKD,GAAG,CAACE,MAAO,IAAGF,GAAG,CAACG,IAAK,EAAC;MACxD,CAAC;MACD,IAAI,CAACL,cAAc,GAAG,IAAIM,mBAAU,CAChC,MAAMV,KAAK,IAAI;QACX,MAAMW,OAAO,GAAGX,KAAK,CAACY,GAAG,CAAChB,IAAI,IAAI;UAC9B,OAAO,IAAI,CAACF,MAAM,CAACmB,QAAQ,CAAC;YACxBC,EAAE,EAAE,IAAAC,wBAAkB,EAACnB,IAAI,CAAC;YAC5BoB,EAAE,EAAE,IAAAC,mBAAa,EAACrB,IAAI;UAC1B,CAAC,CAAC;QACN,CAAC,CAAC;QAEF,MAAMsB,OAAO,GAAG,MAAM,IAAAC,uBAAY,EAAgB;UAC9CC,KAAK,EAAE,IAAI,CAAC1B,MAAM,CAAC0B,KAAK;UACxBpB,KAAK,EAAEW;QACX,CAAC,CAAC;QAEF,MAAMU,OAAO,GAAGH,OAAO,CAACI,MAAM,CAAC,CAACC,UAAU,EAAEC,MAAM,KAAK;UACnD,IAAI,CAACA,MAAM,EAAE;YACT,OAAOD,UAAU;UACrB;UACA,MAAMjB,GAAG,GAAGD,UAAU,CAACmB,MAAM,CAAC;UAC9BD,UAAU,CAACjB,GAAG,CAAC,GAAG,IAAAmB,oBAAW,EAAC,IAAI,CAAC/B,MAAM,EAAE8B,MAAM,CAAkB;UACnE,OAAOD,UAAU;QACrB,CAAC,EAAE,CAAC,CAAC,CAAkC;QACvC,OAAOvB,KAAK,CAACY,GAAG,CAAChB,IAAI,IAAI;UACrB,MAAMU,GAAG,GAAGD,UAAU,CAACT,IAAI,CAAC;UAC5B,OAAOyB,OAAO,CAACf,GAAG,CAAC,IAAI,IAAI;QAC/B,CAAC,CAAC;MACN,CAAC,EACD;QACID;MACJ,CAAC,CACJ;IACL;IACA,OAAO,IAAI,CAACD,cAAc;EAC9B;AACJ;AAAC"}
@@ -1,6 +1,6 @@
1
- import { BlockCategoryStorageOperations } from "@webiny/api-page-builder/types";
2
1
  import { Entity } from "dynamodb-toolbox";
3
2
  import { PluginsContainer } from "@webiny/plugins";
3
+ import { BlockCategoryStorageOperations } from "../../types";
4
4
  export interface CreateBlockCategoryStorageOperationsParams {
5
5
  entity: Entity<any>;
6
6
  plugins: PluginsContainer;
@@ -168,6 +168,7 @@ const createBlockCategoryStorageOperations = ({
168
168
  });
169
169
  };
170
170
  return {
171
+ dataLoader,
171
172
  get,
172
173
  create,
173
174
  update,
@@ -1 +1 @@
1
- {"version":3,"names":["createType","createBlockCategoryStorageOperations","entity","plugins","dataLoader","BlockCategoryDataLoader","get","params","where","getOne","ex","WebinyError","message","code","create","blockCategory","keys","PK","createPartitionKey","tenant","locale","SK","createSortKey","put","TYPE","clear","update","original","category","deleteBlockCategory","delete","list","sort","limit","restWhere","queryAllParams","partitionKey","options","gt","items","queryAll","fields","byType","BlockCategoryDynamoDbElasticFieldPlugin","type","filteredItems","filterItems","sortedItems","sortItems","createListResponse","totalCount","length","after"],"sources":["index.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport {\n BlockCategory,\n BlockCategoryStorageOperations,\n BlockCategoryStorageOperationsCreateParams,\n BlockCategoryStorageOperationsDeleteParams,\n BlockCategoryStorageOperationsGetParams,\n BlockCategoryStorageOperationsListParams,\n BlockCategoryStorageOperationsUpdateParams\n} from \"@webiny/api-page-builder/types\";\nimport { Entity } from \"dynamodb-toolbox\";\nimport { queryAll, QueryAllParams } from \"@webiny/db-dynamodb/utils/query\";\nimport { sortItems } from \"@webiny/db-dynamodb/utils/sort\";\nimport { filterItems } from \"@webiny/db-dynamodb/utils/filter\";\nimport { BlockCategoryDataLoader } from \"./dataLoader\";\nimport { createListResponse } from \"@webiny/db-dynamodb/utils/listResponse\";\nimport { BlockCategoryDynamoDbElasticFieldPlugin } from \"~/plugins/definitions/BlockCategoryDynamoDbElasticFieldPlugin\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport { createPartitionKey, createSortKey } from \"~/operations/blockCategory/keys\";\n\nconst createType = (): string => {\n return \"pb.blockCategory\";\n};\n\nexport interface CreateBlockCategoryStorageOperationsParams {\n entity: Entity<any>;\n plugins: PluginsContainer;\n}\nexport const createBlockCategoryStorageOperations = ({\n entity,\n plugins\n}: CreateBlockCategoryStorageOperationsParams): BlockCategoryStorageOperations => {\n const dataLoader = new BlockCategoryDataLoader({\n entity\n });\n\n const get = async (params: BlockCategoryStorageOperationsGetParams) => {\n const { where } = params;\n\n try {\n return await dataLoader.getOne(where);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not load block category by given parameters.\",\n ex.code || \"BLOCK_CATEGORY_GET_ERROR\",\n {\n where\n }\n );\n }\n };\n\n const create = async (params: BlockCategoryStorageOperationsCreateParams) => {\n const { blockCategory } = params;\n\n const keys = {\n PK: createPartitionKey({\n tenant: blockCategory.tenant,\n locale: blockCategory.locale\n }),\n SK: createSortKey(blockCategory)\n };\n\n try {\n await entity.put({\n ...blockCategory,\n TYPE: createType(),\n ...keys\n });\n /**\n * Always clear data loader cache when modifying the records.\n */\n dataLoader.clear();\n\n return blockCategory;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create block category.\",\n ex.code || \"BLOCK_CATEGORY_CREATE_ERROR\",\n {\n keys\n }\n );\n }\n };\n\n const update = async (params: BlockCategoryStorageOperationsUpdateParams) => {\n const { original, blockCategory } = params;\n const keys = {\n PK: createPartitionKey({\n tenant: original.tenant,\n locale: original.locale\n }),\n SK: createSortKey(blockCategory)\n };\n\n try {\n await entity.put({\n ...blockCategory,\n TYPE: createType(),\n ...keys\n });\n /**\n * Always clear data loader cache when modifying the records.\n */\n dataLoader.clear();\n\n return blockCategory;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update block category.\",\n ex.code || \"BLOCK_CATEGORY_UPDATE_ERROR\",\n {\n keys,\n original,\n category: blockCategory\n }\n );\n }\n };\n\n const deleteBlockCategory = async (params: BlockCategoryStorageOperationsDeleteParams) => {\n const { blockCategory } = params;\n const keys = {\n PK: createPartitionKey({\n tenant: blockCategory.tenant,\n locale: blockCategory.locale\n }),\n SK: createSortKey(blockCategory)\n };\n\n try {\n await entity.delete({\n ...blockCategory,\n ...keys\n });\n /**\n * Always clear data loader cache when modifying the records.\n */\n dataLoader.clear();\n\n return blockCategory;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete block category.\",\n ex.code || \"BLOCK_CATEGORY_DELETE_ERROR\",\n {\n keys,\n blockCategory\n }\n );\n }\n };\n\n const list = async (params: BlockCategoryStorageOperationsListParams) => {\n const { where, sort, limit } = params;\n\n const { tenant, locale, ...restWhere } = where;\n const queryAllParams: QueryAllParams = {\n entity,\n partitionKey: createPartitionKey({ tenant, locale }),\n options: {\n gt: \" \"\n }\n };\n\n let items: BlockCategory[] = [];\n\n try {\n items = await queryAll<BlockCategory>(queryAllParams);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not list block categories by given parameters.\",\n ex.code || \"BLOCK_CATEGORIES_LIST_ERROR\",\n {\n partitionKey: queryAllParams.partitionKey,\n options: queryAllParams.options\n }\n );\n }\n\n const fields = plugins.byType<BlockCategoryDynamoDbElasticFieldPlugin>(\n BlockCategoryDynamoDbElasticFieldPlugin.type\n );\n\n const filteredItems = filterItems<BlockCategory>({\n plugins,\n where: restWhere,\n items,\n fields\n });\n\n const sortedItems = sortItems<BlockCategory>({\n items: filteredItems,\n sort,\n fields\n });\n\n return createListResponse({\n items: sortedItems,\n limit: limit || 100000,\n totalCount: filteredItems.length,\n after: null\n });\n };\n\n return {\n get,\n create,\n update,\n delete: deleteBlockCategory,\n list\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["createType","createBlockCategoryStorageOperations","entity","plugins","dataLoader","BlockCategoryDataLoader","get","params","where","getOne","ex","WebinyError","message","code","create","blockCategory","keys","PK","createPartitionKey","tenant","locale","SK","createSortKey","put","TYPE","clear","update","original","category","deleteBlockCategory","delete","list","sort","limit","restWhere","queryAllParams","partitionKey","options","gt","items","queryAll","fields","byType","BlockCategoryDynamoDbElasticFieldPlugin","type","filteredItems","filterItems","sortedItems","sortItems","createListResponse","totalCount","length","after"],"sources":["index.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport {\n BlockCategory,\n BlockCategoryStorageOperationsCreateParams,\n BlockCategoryStorageOperationsDeleteParams,\n BlockCategoryStorageOperationsGetParams,\n BlockCategoryStorageOperationsListParams,\n BlockCategoryStorageOperationsUpdateParams\n} from \"@webiny/api-page-builder/types\";\nimport { Entity } from \"dynamodb-toolbox\";\nimport { queryAll, QueryAllParams } from \"@webiny/db-dynamodb/utils/query\";\nimport { sortItems } from \"@webiny/db-dynamodb/utils/sort\";\nimport { filterItems } from \"@webiny/db-dynamodb/utils/filter\";\nimport { BlockCategoryDataLoader } from \"./dataLoader\";\nimport { createListResponse } from \"@webiny/db-dynamodb/utils/listResponse\";\nimport { BlockCategoryDynamoDbElasticFieldPlugin } from \"~/plugins/definitions/BlockCategoryDynamoDbElasticFieldPlugin\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport { createPartitionKey, createSortKey } from \"~/operations/blockCategory/keys\";\nimport { BlockCategoryStorageOperations } from \"~/types\";\n\nconst createType = (): string => {\n return \"pb.blockCategory\";\n};\n\nexport interface CreateBlockCategoryStorageOperationsParams {\n entity: Entity<any>;\n plugins: PluginsContainer;\n}\nexport const createBlockCategoryStorageOperations = ({\n entity,\n plugins\n}: CreateBlockCategoryStorageOperationsParams): BlockCategoryStorageOperations => {\n const dataLoader = new BlockCategoryDataLoader({\n entity\n });\n\n const get = async (params: BlockCategoryStorageOperationsGetParams) => {\n const { where } = params;\n\n try {\n return await dataLoader.getOne(where);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not load block category by given parameters.\",\n ex.code || \"BLOCK_CATEGORY_GET_ERROR\",\n {\n where\n }\n );\n }\n };\n\n const create = async (params: BlockCategoryStorageOperationsCreateParams) => {\n const { blockCategory } = params;\n\n const keys = {\n PK: createPartitionKey({\n tenant: blockCategory.tenant,\n locale: blockCategory.locale\n }),\n SK: createSortKey(blockCategory)\n };\n\n try {\n await entity.put({\n ...blockCategory,\n TYPE: createType(),\n ...keys\n });\n /**\n * Always clear data loader cache when modifying the records.\n */\n dataLoader.clear();\n\n return blockCategory;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create block category.\",\n ex.code || \"BLOCK_CATEGORY_CREATE_ERROR\",\n {\n keys\n }\n );\n }\n };\n\n const update = async (params: BlockCategoryStorageOperationsUpdateParams) => {\n const { original, blockCategory } = params;\n const keys = {\n PK: createPartitionKey({\n tenant: original.tenant,\n locale: original.locale\n }),\n SK: createSortKey(blockCategory)\n };\n\n try {\n await entity.put({\n ...blockCategory,\n TYPE: createType(),\n ...keys\n });\n /**\n * Always clear data loader cache when modifying the records.\n */\n dataLoader.clear();\n\n return blockCategory;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update block category.\",\n ex.code || \"BLOCK_CATEGORY_UPDATE_ERROR\",\n {\n keys,\n original,\n category: blockCategory\n }\n );\n }\n };\n\n const deleteBlockCategory = async (params: BlockCategoryStorageOperationsDeleteParams) => {\n const { blockCategory } = params;\n const keys = {\n PK: createPartitionKey({\n tenant: blockCategory.tenant,\n locale: blockCategory.locale\n }),\n SK: createSortKey(blockCategory)\n };\n\n try {\n await entity.delete({\n ...blockCategory,\n ...keys\n });\n /**\n * Always clear data loader cache when modifying the records.\n */\n dataLoader.clear();\n\n return blockCategory;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete block category.\",\n ex.code || \"BLOCK_CATEGORY_DELETE_ERROR\",\n {\n keys,\n blockCategory\n }\n );\n }\n };\n\n const list = async (params: BlockCategoryStorageOperationsListParams) => {\n const { where, sort, limit } = params;\n\n const { tenant, locale, ...restWhere } = where;\n const queryAllParams: QueryAllParams = {\n entity,\n partitionKey: createPartitionKey({ tenant, locale }),\n options: {\n gt: \" \"\n }\n };\n\n let items: BlockCategory[] = [];\n\n try {\n items = await queryAll<BlockCategory>(queryAllParams);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not list block categories by given parameters.\",\n ex.code || \"BLOCK_CATEGORIES_LIST_ERROR\",\n {\n partitionKey: queryAllParams.partitionKey,\n options: queryAllParams.options\n }\n );\n }\n\n const fields = plugins.byType<BlockCategoryDynamoDbElasticFieldPlugin>(\n BlockCategoryDynamoDbElasticFieldPlugin.type\n );\n\n const filteredItems = filterItems<BlockCategory>({\n plugins,\n where: restWhere,\n items,\n fields\n });\n\n const sortedItems = sortItems<BlockCategory>({\n items: filteredItems,\n sort,\n fields\n });\n\n return createListResponse({\n items: sortedItems,\n limit: limit || 100000,\n totalCount: filteredItems.length,\n after: null\n });\n };\n\n return {\n dataLoader,\n get,\n create,\n update,\n delete: deleteBlockCategory,\n list\n };\n};\n"],"mappings":"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"}
@@ -1,10 +1,11 @@
1
1
  import { Category } from "@webiny/api-page-builder/types";
2
2
  import { Entity } from "dynamodb-toolbox";
3
+ import { DataLoaderInterface } from "../../types";
3
4
  interface Params {
4
5
  entity: Entity<any>;
5
6
  }
6
7
  declare type DataLoaderGetItem = Pick<Category, "slug" | "tenant" | "locale">;
7
- export declare class CategoryDataLoader {
8
+ export declare class CategoryDataLoader implements DataLoaderInterface {
8
9
  private _getDataLoader;
9
10
  private readonly entity;
10
11
  constructor(params: Params);
@@ -1 +1 @@
1
- {"version":3,"names":["CategoryDataLoader","constructor","params","undefined","entity","getOne","item","getDataLoader","load","getAll","items","loadMany","clear","clearAll","_getDataLoader","cacheKeyFn","key","tenant","locale","slug","DataLoader","batched","map","getBatch","PK","createPartitionKey","SK","createSortKey","records","batchReadAll","table","results","reduce","collection","result","cleanupItem"],"sources":["dataLoader.ts"],"sourcesContent":["import DataLoader from \"dataloader\";\nimport { batchReadAll } from \"@webiny/db-dynamodb/utils/batchRead\";\nimport { Category } from \"@webiny/api-page-builder/types\";\nimport { cleanupItem } from \"@webiny/db-dynamodb/utils/cleanup\";\nimport { Entity } from \"dynamodb-toolbox\";\nimport { createPartitionKey, createSortKey } from \"./keys\";\n\ninterface Params {\n entity: Entity<any>;\n}\n\ntype DataLoaderGetItem = Pick<Category, \"slug\" | \"tenant\" | \"locale\">;\n\nexport class CategoryDataLoader {\n private _getDataLoader: DataLoader<any, any> | undefined = undefined;\n\n private readonly entity: Entity<any>;\n\n constructor(params: Params) {\n this.entity = params.entity;\n }\n\n public async getOne(item: DataLoaderGetItem): Promise<Category> {\n return await this.getDataLoader().load(item);\n }\n\n public async getAll(items: DataLoaderGetItem[]): Promise<Category[]> {\n return await this.getDataLoader().loadMany(items);\n }\n\n public clear(): void {\n this.getDataLoader().clearAll();\n }\n\n private getDataLoader(): DataLoader<any, any> {\n if (!this._getDataLoader) {\n const cacheKeyFn = (key: DataLoaderGetItem) => {\n return `T#${key.tenant}#L#${key.locale}#${key.slug}`;\n };\n this._getDataLoader = new DataLoader(\n async items => {\n const batched = items.map(item => {\n return this.entity.getBatch({\n PK: createPartitionKey(item),\n SK: createSortKey(item)\n });\n });\n\n const records = await batchReadAll<Category>({\n table: this.entity.table,\n items: batched\n });\n\n const results = records.reduce((collection, result) => {\n if (!result) {\n return collection;\n }\n const key = cacheKeyFn(result);\n collection[key] = cleanupItem(this.entity, result) as Category;\n return collection;\n }, {} as Record<string, Category>);\n return items.map(item => {\n const key = cacheKeyFn(item);\n return results[key] || null;\n });\n },\n {\n cacheKeyFn\n }\n );\n }\n return this._getDataLoader;\n }\n}\n"],"mappings":";;;;;;;;AAAA;AACA;AAEA;AAEA;AAQO,MAAMA,kBAAkB,CAAC;EAK5BC,WAAW,CAACC,MAAc,EAAE;IAAA,sDAJ+BC,SAAS;IAAA;IAKhE,IAAI,CAACC,MAAM,GAAGF,MAAM,CAACE,MAAM;EAC/B;EAEA,MAAaC,MAAM,CAACC,IAAuB,EAAqB;IAC5D,OAAO,MAAM,IAAI,CAACC,aAAa,EAAE,CAACC,IAAI,CAACF,IAAI,CAAC;EAChD;EAEA,MAAaG,MAAM,CAACC,KAA0B,EAAuB;IACjE,OAAO,MAAM,IAAI,CAACH,aAAa,EAAE,CAACI,QAAQ,CAACD,KAAK,CAAC;EACrD;EAEOE,KAAK,GAAS;IACjB,IAAI,CAACL,aAAa,EAAE,CAACM,QAAQ,EAAE;EACnC;EAEQN,aAAa,GAAyB;IAC1C,IAAI,CAAC,IAAI,CAACO,cAAc,EAAE;MACtB,MAAMC,UAAU,GAAIC,GAAsB,IAAK;QAC3C,OAAQ,KAAIA,GAAG,CAACC,MAAO,MAAKD,GAAG,CAACE,MAAO,IAAGF,GAAG,CAACG,IAAK,EAAC;MACxD,CAAC;MACD,IAAI,CAACL,cAAc,GAAG,IAAIM,mBAAU,CAChC,MAAMV,KAAK,IAAI;QACX,MAAMW,OAAO,GAAGX,KAAK,CAACY,GAAG,CAAChB,IAAI,IAAI;UAC9B,OAAO,IAAI,CAACF,MAAM,CAACmB,QAAQ,CAAC;YACxBC,EAAE,EAAE,IAAAC,wBAAkB,EAACnB,IAAI,CAAC;YAC5BoB,EAAE,EAAE,IAAAC,mBAAa,EAACrB,IAAI;UAC1B,CAAC,CAAC;QACN,CAAC,CAAC;QAEF,MAAMsB,OAAO,GAAG,MAAM,IAAAC,uBAAY,EAAW;UACzCC,KAAK,EAAE,IAAI,CAAC1B,MAAM,CAAC0B,KAAK;UACxBpB,KAAK,EAAEW;QACX,CAAC,CAAC;QAEF,MAAMU,OAAO,GAAGH,OAAO,CAACI,MAAM,CAAC,CAACC,UAAU,EAAEC,MAAM,KAAK;UACnD,IAAI,CAACA,MAAM,EAAE;YACT,OAAOD,UAAU;UACrB;UACA,MAAMjB,GAAG,GAAGD,UAAU,CAACmB,MAAM,CAAC;UAC9BD,UAAU,CAACjB,GAAG,CAAC,GAAG,IAAAmB,oBAAW,EAAC,IAAI,CAAC/B,MAAM,EAAE8B,MAAM,CAAa;UAC9D,OAAOD,UAAU;QACrB,CAAC,EAAE,CAAC,CAAC,CAA6B;QAClC,OAAOvB,KAAK,CAACY,GAAG,CAAChB,IAAI,IAAI;UACrB,MAAMU,GAAG,GAAGD,UAAU,CAACT,IAAI,CAAC;UAC5B,OAAOyB,OAAO,CAACf,GAAG,CAAC,IAAI,IAAI;QAC/B,CAAC,CAAC;MACN,CAAC,EACD;QACID;MACJ,CAAC,CACJ;IACL;IACA,OAAO,IAAI,CAACD,cAAc;EAC9B;AACJ;AAAC"}
1
+ {"version":3,"names":["CategoryDataLoader","constructor","params","undefined","entity","getOne","item","getDataLoader","load","getAll","items","loadMany","clear","clearAll","_getDataLoader","cacheKeyFn","key","tenant","locale","slug","DataLoader","batched","map","getBatch","PK","createPartitionKey","SK","createSortKey","records","batchReadAll","table","results","reduce","collection","result","cleanupItem"],"sources":["dataLoader.ts"],"sourcesContent":["import DataLoader from \"dataloader\";\nimport { batchReadAll } from \"@webiny/db-dynamodb/utils/batchRead\";\nimport { Category } from \"@webiny/api-page-builder/types\";\nimport { cleanupItem } from \"@webiny/db-dynamodb/utils/cleanup\";\nimport { Entity } from \"dynamodb-toolbox\";\nimport { createPartitionKey, createSortKey } from \"./keys\";\nimport { DataLoaderInterface } from \"~/types\";\n\ninterface Params {\n entity: Entity<any>;\n}\n\ntype DataLoaderGetItem = Pick<Category, \"slug\" | \"tenant\" | \"locale\">;\n\nexport class CategoryDataLoader implements DataLoaderInterface {\n private _getDataLoader: DataLoader<any, any> | undefined = undefined;\n\n private readonly entity: Entity<any>;\n\n constructor(params: Params) {\n this.entity = params.entity;\n }\n\n public async getOne(item: DataLoaderGetItem): Promise<Category> {\n return await this.getDataLoader().load(item);\n }\n\n public async getAll(items: DataLoaderGetItem[]): Promise<Category[]> {\n return await this.getDataLoader().loadMany(items);\n }\n\n public clear(): void {\n this.getDataLoader().clearAll();\n }\n\n private getDataLoader(): DataLoader<any, any> {\n if (!this._getDataLoader) {\n const cacheKeyFn = (key: DataLoaderGetItem) => {\n return `T#${key.tenant}#L#${key.locale}#${key.slug}`;\n };\n this._getDataLoader = new DataLoader(\n async items => {\n const batched = items.map(item => {\n return this.entity.getBatch({\n PK: createPartitionKey(item),\n SK: createSortKey(item)\n });\n });\n\n const records = await batchReadAll<Category>({\n table: this.entity.table,\n items: batched\n });\n\n const results = records.reduce((collection, result) => {\n if (!result) {\n return collection;\n }\n const key = cacheKeyFn(result);\n collection[key] = cleanupItem(this.entity, result) as Category;\n return collection;\n }, {} as Record<string, Category>);\n return items.map(item => {\n const key = cacheKeyFn(item);\n return results[key] || null;\n });\n },\n {\n cacheKeyFn\n }\n );\n }\n return this._getDataLoader;\n }\n}\n"],"mappings":";;;;;;;;AAAA;AACA;AAEA;AAEA;AASO,MAAMA,kBAAkB,CAAgC;EAK3DC,WAAW,CAACC,MAAc,EAAE;IAAA,sDAJ+BC,SAAS;IAAA;IAKhE,IAAI,CAACC,MAAM,GAAGF,MAAM,CAACE,MAAM;EAC/B;EAEA,MAAaC,MAAM,CAACC,IAAuB,EAAqB;IAC5D,OAAO,MAAM,IAAI,CAACC,aAAa,EAAE,CAACC,IAAI,CAACF,IAAI,CAAC;EAChD;EAEA,MAAaG,MAAM,CAACC,KAA0B,EAAuB;IACjE,OAAO,MAAM,IAAI,CAACH,aAAa,EAAE,CAACI,QAAQ,CAACD,KAAK,CAAC;EACrD;EAEOE,KAAK,GAAS;IACjB,IAAI,CAACL,aAAa,EAAE,CAACM,QAAQ,EAAE;EACnC;EAEQN,aAAa,GAAyB;IAC1C,IAAI,CAAC,IAAI,CAACO,cAAc,EAAE;MACtB,MAAMC,UAAU,GAAIC,GAAsB,IAAK;QAC3C,OAAQ,KAAIA,GAAG,CAACC,MAAO,MAAKD,GAAG,CAACE,MAAO,IAAGF,GAAG,CAACG,IAAK,EAAC;MACxD,CAAC;MACD,IAAI,CAACL,cAAc,GAAG,IAAIM,mBAAU,CAChC,MAAMV,KAAK,IAAI;QACX,MAAMW,OAAO,GAAGX,KAAK,CAACY,GAAG,CAAChB,IAAI,IAAI;UAC9B,OAAO,IAAI,CAACF,MAAM,CAACmB,QAAQ,CAAC;YACxBC,EAAE,EAAE,IAAAC,wBAAkB,EAACnB,IAAI,CAAC;YAC5BoB,EAAE,EAAE,IAAAC,mBAAa,EAACrB,IAAI;UAC1B,CAAC,CAAC;QACN,CAAC,CAAC;QAEF,MAAMsB,OAAO,GAAG,MAAM,IAAAC,uBAAY,EAAW;UACzCC,KAAK,EAAE,IAAI,CAAC1B,MAAM,CAAC0B,KAAK;UACxBpB,KAAK,EAAEW;QACX,CAAC,CAAC;QAEF,MAAMU,OAAO,GAAGH,OAAO,CAACI,MAAM,CAAC,CAACC,UAAU,EAAEC,MAAM,KAAK;UACnD,IAAI,CAACA,MAAM,EAAE;YACT,OAAOD,UAAU;UACrB;UACA,MAAMjB,GAAG,GAAGD,UAAU,CAACmB,MAAM,CAAC;UAC9BD,UAAU,CAACjB,GAAG,CAAC,GAAG,IAAAmB,oBAAW,EAAC,IAAI,CAAC/B,MAAM,EAAE8B,MAAM,CAAa;UAC9D,OAAOD,UAAU;QACrB,CAAC,EAAE,CAAC,CAAC,CAA6B;QAClC,OAAOvB,KAAK,CAACY,GAAG,CAAChB,IAAI,IAAI;UACrB,MAAMU,GAAG,GAAGD,UAAU,CAACT,IAAI,CAAC;UAC5B,OAAOyB,OAAO,CAACf,GAAG,CAAC,IAAI,IAAI;QAC/B,CAAC,CAAC;MACN,CAAC,EACD;QACID;MACJ,CAAC,CACJ;IACL;IACA,OAAO,IAAI,CAACD,cAAc;EAC9B;AACJ;AAAC"}
@@ -1,6 +1,6 @@
1
- import { CategoryStorageOperations } from "@webiny/api-page-builder/types";
2
1
  import { Entity } from "dynamodb-toolbox";
3
2
  import { PluginsContainer } from "@webiny/plugins";
3
+ import { CategoryStorageOperations } from "../../types";
4
4
  export interface CreateCategoryStorageOperationsParams {
5
5
  entity: Entity<any>;
6
6
  plugins: PluginsContainer;
@@ -168,6 +168,7 @@ const createCategoryStorageOperations = ({
168
168
  });
169
169
  };
170
170
  return {
171
+ dataLoader,
171
172
  get,
172
173
  create,
173
174
  update,
@@ -1 +1 @@
1
- {"version":3,"names":["createType","createCategoryStorageOperations","entity","plugins","dataLoader","CategoryDataLoader","get","params","where","getOne","ex","WebinyError","message","code","create","category","keys","PK","createPartitionKey","tenant","locale","SK","createSortKey","put","TYPE","clear","update","original","deleteCategory","delete","list","sort","limit","restWhere","queryAllParams","partitionKey","options","gt","items","queryAll","fields","byType","CategoryDynamoDbElasticFieldPlugin","type","filteredItems","filterItems","sortedItems","sortItems","createListResponse","totalCount","length","after"],"sources":["index.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport {\n Category,\n CategoryStorageOperations,\n CategoryStorageOperationsCreateParams,\n CategoryStorageOperationsDeleteParams,\n CategoryStorageOperationsGetParams,\n CategoryStorageOperationsListParams,\n CategoryStorageOperationsUpdateParams\n} from \"@webiny/api-page-builder/types\";\nimport { Entity } from \"dynamodb-toolbox\";\nimport { queryAll, QueryAllParams } from \"@webiny/db-dynamodb/utils/query\";\nimport { sortItems } from \"@webiny/db-dynamodb/utils/sort\";\nimport { filterItems } from \"@webiny/db-dynamodb/utils/filter\";\nimport { CategoryDataLoader } from \"./dataLoader\";\nimport { createListResponse } from \"@webiny/db-dynamodb/utils/listResponse\";\nimport { CategoryDynamoDbElasticFieldPlugin } from \"~/plugins/definitions/CategoryDynamoDbElasticFieldPlugin\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport { createPartitionKey, createSortKey } from \"~/operations/category/keys\";\n\nconst createType = (): string => {\n return \"pb.category\";\n};\n\nexport interface CreateCategoryStorageOperationsParams {\n entity: Entity<any>;\n plugins: PluginsContainer;\n}\nexport const createCategoryStorageOperations = ({\n entity,\n plugins\n}: CreateCategoryStorageOperationsParams): CategoryStorageOperations => {\n const dataLoader = new CategoryDataLoader({\n entity\n });\n\n const get = async (params: CategoryStorageOperationsGetParams) => {\n const { where } = params;\n\n try {\n return await dataLoader.getOne(where);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not load category by given parameters.\",\n ex.code || \"CATEGORY_GET_ERROR\",\n {\n where\n }\n );\n }\n };\n\n const create = async (params: CategoryStorageOperationsCreateParams) => {\n const { category } = params;\n\n const keys = {\n PK: createPartitionKey({\n tenant: category.tenant,\n locale: category.locale\n }),\n SK: createSortKey(category)\n };\n\n try {\n await entity.put({\n ...category,\n TYPE: createType(),\n ...keys\n });\n /**\n * Always clear data loader cache when modifying the records.\n */\n dataLoader.clear();\n\n return category;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create category.\",\n ex.code || \"CATEGORY_CREATE_ERROR\",\n {\n keys\n }\n );\n }\n };\n\n const update = async (params: CategoryStorageOperationsUpdateParams) => {\n const { original, category } = params;\n const keys = {\n PK: createPartitionKey({\n tenant: original.tenant,\n locale: original.locale\n }),\n SK: createSortKey(category)\n };\n\n try {\n await entity.put({\n ...category,\n TYPE: createType(),\n ...keys\n });\n /**\n * Always clear data loader cache when modifying the records.\n */\n dataLoader.clear();\n\n return category;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update category.\",\n ex.code || \"CATEGORY_UPDATE_ERROR\",\n {\n keys,\n original,\n category\n }\n );\n }\n };\n\n const deleteCategory = async (params: CategoryStorageOperationsDeleteParams) => {\n const { category } = params;\n const keys = {\n PK: createPartitionKey({\n tenant: category.tenant,\n locale: category.locale\n }),\n SK: createSortKey(category)\n };\n\n try {\n await entity.delete({\n ...category,\n ...keys\n });\n /**\n * Always clear data loader cache when modifying the records.\n */\n dataLoader.clear();\n\n return category;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete category.\",\n ex.code || \"CATEGORY_DELETE_ERROR\",\n {\n keys,\n category\n }\n );\n }\n };\n\n const list = async (params: CategoryStorageOperationsListParams) => {\n const { where, sort, limit } = params;\n\n const { tenant, locale, ...restWhere } = where;\n const queryAllParams: QueryAllParams = {\n entity,\n partitionKey: createPartitionKey({ tenant, locale }),\n options: {\n gt: \" \"\n }\n };\n\n let items: Category[] = [];\n\n try {\n items = await queryAll<Category>(queryAllParams);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not list categories by given parameters.\",\n ex.code || \"CATEGORIES_LIST_ERROR\",\n {\n partitionKey: queryAllParams.partitionKey,\n options: queryAllParams.options\n }\n );\n }\n\n const fields = plugins.byType<CategoryDynamoDbElasticFieldPlugin>(\n CategoryDynamoDbElasticFieldPlugin.type\n );\n\n const filteredItems = filterItems<Category>({\n plugins,\n where: restWhere,\n items,\n fields\n });\n\n const sortedItems = sortItems<Category>({\n items: filteredItems,\n sort,\n fields\n });\n\n return createListResponse({\n items: sortedItems,\n limit: limit || 100000,\n totalCount: filteredItems.length,\n after: null\n });\n };\n\n return {\n get,\n create,\n update,\n delete: deleteCategory,\n list\n };\n};\n"],"mappings":";;;;;;;;;AAAA;AAWA;AACA;AACA;AACA;AACA;AACA;AAEA;AAA+E;AAE/E,MAAMA,UAAU,GAAG,MAAc;EAC7B,OAAO,aAAa;AACxB,CAAC;AAMM,MAAMC,+BAA+B,GAAG,CAAC;EAC5CC,MAAM;EACNC;AACmC,CAAC,KAAgC;EACpE,MAAMC,UAAU,GAAG,IAAIC,8BAAkB,CAAC;IACtCH;EACJ,CAAC,CAAC;EAEF,MAAMI,GAAG,GAAG,MAAOC,MAA0C,IAAK;IAC9D,MAAM;MAAEC;IAAM,CAAC,GAAGD,MAAM;IAExB,IAAI;MACA,OAAO,MAAMH,UAAU,CAACK,MAAM,CAACD,KAAK,CAAC;IACzC,CAAC,CAAC,OAAOE,EAAE,EAAE;MACT,MAAM,IAAIC,cAAW,CACjBD,EAAE,CAACE,OAAO,IAAI,8CAA8C,EAC5DF,EAAE,CAACG,IAAI,IAAI,oBAAoB,EAC/B;QACIL;MACJ,CAAC,CACJ;IACL;EACJ,CAAC;EAED,MAAMM,MAAM,GAAG,MAAOP,MAA6C,IAAK;IACpE,MAAM;MAAEQ;IAAS,CAAC,GAAGR,MAAM;IAE3B,MAAMS,IAAI,GAAG;MACTC,EAAE,EAAE,IAAAC,wBAAkB,EAAC;QACnBC,MAAM,EAAEJ,QAAQ,CAACI,MAAM;QACvBC,MAAM,EAAEL,QAAQ,CAACK;MACrB,CAAC,CAAC;MACFC,EAAE,EAAE,IAAAC,mBAAa,EAACP,QAAQ;IAC9B,CAAC;IAED,IAAI;MACA,MAAMb,MAAM,CAACqB,GAAG,6DACTR,QAAQ;QACXS,IAAI,EAAExB,UAAU;MAAE,GACfgB,IAAI,EACT;MACF;AACZ;AACA;MACYZ,UAAU,CAACqB,KAAK,EAAE;MAElB,OAAOV,QAAQ;IACnB,CAAC,CAAC,OAAOL,EAAE,EAAE;MACT,MAAM,IAAIC,cAAW,CACjBD,EAAE,CAACE,OAAO,IAAI,4BAA4B,EAC1CF,EAAE,CAACG,IAAI,IAAI,uBAAuB,EAClC;QACIG;MACJ,CAAC,CACJ;IACL;EACJ,CAAC;EAED,MAAMU,MAAM,GAAG,MAAOnB,MAA6C,IAAK;IACpE,MAAM;MAAEoB,QAAQ;MAAEZ;IAAS,CAAC,GAAGR,MAAM;IACrC,MAAMS,IAAI,GAAG;MACTC,EAAE,EAAE,IAAAC,wBAAkB,EAAC;QACnBC,MAAM,EAAEQ,QAAQ,CAACR,MAAM;QACvBC,MAAM,EAAEO,QAAQ,CAACP;MACrB,CAAC,CAAC;MACFC,EAAE,EAAE,IAAAC,mBAAa,EAACP,QAAQ;IAC9B,CAAC;IAED,IAAI;MACA,MAAMb,MAAM,CAACqB,GAAG,6DACTR,QAAQ;QACXS,IAAI,EAAExB,UAAU;MAAE,GACfgB,IAAI,EACT;MACF;AACZ;AACA;MACYZ,UAAU,CAACqB,KAAK,EAAE;MAElB,OAAOV,QAAQ;IACnB,CAAC,CAAC,OAAOL,EAAE,EAAE;MACT,MAAM,IAAIC,cAAW,CACjBD,EAAE,CAACE,OAAO,IAAI,4BAA4B,EAC1CF,EAAE,CAACG,IAAI,IAAI,uBAAuB,EAClC;QACIG,IAAI;QACJW,QAAQ;QACRZ;MACJ,CAAC,CACJ;IACL;EACJ,CAAC;EAED,MAAMa,cAAc,GAAG,MAAOrB,MAA6C,IAAK;IAC5E,MAAM;MAAEQ;IAAS,CAAC,GAAGR,MAAM;IAC3B,MAAMS,IAAI,GAAG;MACTC,EAAE,EAAE,IAAAC,wBAAkB,EAAC;QACnBC,MAAM,EAAEJ,QAAQ,CAACI,MAAM;QACvBC,MAAM,EAAEL,QAAQ,CAACK;MACrB,CAAC,CAAC;MACFC,EAAE,EAAE,IAAAC,mBAAa,EAACP,QAAQ;IAC9B,CAAC;IAED,IAAI;MACA,MAAMb,MAAM,CAAC2B,MAAM,6DACZd,QAAQ,GACRC,IAAI,EACT;MACF;AACZ;AACA;MACYZ,UAAU,CAACqB,KAAK,EAAE;MAElB,OAAOV,QAAQ;IACnB,CAAC,CAAC,OAAOL,EAAE,EAAE;MACT,MAAM,IAAIC,cAAW,CACjBD,EAAE,CAACE,OAAO,IAAI,4BAA4B,EAC1CF,EAAE,CAACG,IAAI,IAAI,uBAAuB,EAClC;QACIG,IAAI;QACJD;MACJ,CAAC,CACJ;IACL;EACJ,CAAC;EAED,MAAMe,IAAI,GAAG,MAAOvB,MAA2C,IAAK;IAChE,MAAM;MAAEC,KAAK;MAAEuB,IAAI;MAAEC;IAAM,CAAC,GAAGzB,MAAM;IAErC,MAAM;QAAEY,MAAM;QAAEC;MAAqB,CAAC,GAAGZ,KAAK;MAAnByB,SAAS,0CAAKzB,KAAK;IAC9C,MAAM0B,cAA8B,GAAG;MACnChC,MAAM;MACNiC,YAAY,EAAE,IAAAjB,wBAAkB,EAAC;QAAEC,MAAM;QAAEC;MAAO,CAAC,CAAC;MACpDgB,OAAO,EAAE;QACLC,EAAE,EAAE;MACR;IACJ,CAAC;IAED,IAAIC,KAAiB,GAAG,EAAE;IAE1B,IAAI;MACAA,KAAK,GAAG,MAAM,IAAAC,eAAQ,EAAWL,cAAc,CAAC;IACpD,CAAC,CAAC,OAAOxB,EAAE,EAAE;MACT,MAAM,IAAIC,cAAW,CACjBD,EAAE,CAACE,OAAO,IAAI,gDAAgD,EAC9DF,EAAE,CAACG,IAAI,IAAI,uBAAuB,EAClC;QACIsB,YAAY,EAAED,cAAc,CAACC,YAAY;QACzCC,OAAO,EAAEF,cAAc,CAACE;MAC5B,CAAC,CACJ;IACL;IAEA,MAAMI,MAAM,GAAGrC,OAAO,CAACsC,MAAM,CACzBC,sEAAkC,CAACC,IAAI,CAC1C;IAED,MAAMC,aAAa,GAAG,IAAAC,mBAAW,EAAW;MACxC1C,OAAO;MACPK,KAAK,EAAEyB,SAAS;MAChBK,KAAK;MACLE;IACJ,CAAC,CAAC;IAEF,MAAMM,WAAW,GAAG,IAAAC,eAAS,EAAW;MACpCT,KAAK,EAAEM,aAAa;MACpBb,IAAI;MACJS;IACJ,CAAC,CAAC;IAEF,OAAO,IAAAQ,gCAAkB,EAAC;MACtBV,KAAK,EAAEQ,WAAW;MAClBd,KAAK,EAAEA,KAAK,IAAI,MAAM;MACtBiB,UAAU,EAAEL,aAAa,CAACM,MAAM;MAChCC,KAAK,EAAE;IACX,CAAC,CAAC;EACN,CAAC;EAED,OAAO;IACH7C,GAAG;IACHQ,MAAM;IACNY,MAAM;IACNG,MAAM,EAAED,cAAc;IACtBE;EACJ,CAAC;AACL,CAAC;AAAC"}
1
+ {"version":3,"names":["createType","createCategoryStorageOperations","entity","plugins","dataLoader","CategoryDataLoader","get","params","where","getOne","ex","WebinyError","message","code","create","category","keys","PK","createPartitionKey","tenant","locale","SK","createSortKey","put","TYPE","clear","update","original","deleteCategory","delete","list","sort","limit","restWhere","queryAllParams","partitionKey","options","gt","items","queryAll","fields","byType","CategoryDynamoDbElasticFieldPlugin","type","filteredItems","filterItems","sortedItems","sortItems","createListResponse","totalCount","length","after"],"sources":["index.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport {\n Category,\n CategoryStorageOperationsCreateParams,\n CategoryStorageOperationsDeleteParams,\n CategoryStorageOperationsGetParams,\n CategoryStorageOperationsListParams,\n CategoryStorageOperationsUpdateParams\n} from \"@webiny/api-page-builder/types\";\nimport { Entity } from \"dynamodb-toolbox\";\nimport { queryAll, QueryAllParams } from \"@webiny/db-dynamodb/utils/query\";\nimport { sortItems } from \"@webiny/db-dynamodb/utils/sort\";\nimport { filterItems } from \"@webiny/db-dynamodb/utils/filter\";\nimport { CategoryDataLoader } from \"./dataLoader\";\nimport { createListResponse } from \"@webiny/db-dynamodb/utils/listResponse\";\nimport { CategoryDynamoDbElasticFieldPlugin } from \"~/plugins/definitions/CategoryDynamoDbElasticFieldPlugin\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport { createPartitionKey, createSortKey } from \"~/operations/category/keys\";\nimport { CategoryStorageOperations } from \"~/types\";\n\nconst createType = (): string => {\n return \"pb.category\";\n};\n\nexport interface CreateCategoryStorageOperationsParams {\n entity: Entity<any>;\n plugins: PluginsContainer;\n}\nexport const createCategoryStorageOperations = ({\n entity,\n plugins\n}: CreateCategoryStorageOperationsParams): CategoryStorageOperations => {\n const dataLoader = new CategoryDataLoader({\n entity\n });\n\n const get = async (params: CategoryStorageOperationsGetParams) => {\n const { where } = params;\n\n try {\n return await dataLoader.getOne(where);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not load category by given parameters.\",\n ex.code || \"CATEGORY_GET_ERROR\",\n {\n where\n }\n );\n }\n };\n\n const create = async (params: CategoryStorageOperationsCreateParams) => {\n const { category } = params;\n\n const keys = {\n PK: createPartitionKey({\n tenant: category.tenant,\n locale: category.locale\n }),\n SK: createSortKey(category)\n };\n\n try {\n await entity.put({\n ...category,\n TYPE: createType(),\n ...keys\n });\n /**\n * Always clear data loader cache when modifying the records.\n */\n dataLoader.clear();\n\n return category;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create category.\",\n ex.code || \"CATEGORY_CREATE_ERROR\",\n {\n keys\n }\n );\n }\n };\n\n const update = async (params: CategoryStorageOperationsUpdateParams) => {\n const { original, category } = params;\n const keys = {\n PK: createPartitionKey({\n tenant: original.tenant,\n locale: original.locale\n }),\n SK: createSortKey(category)\n };\n\n try {\n await entity.put({\n ...category,\n TYPE: createType(),\n ...keys\n });\n /**\n * Always clear data loader cache when modifying the records.\n */\n dataLoader.clear();\n\n return category;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update category.\",\n ex.code || \"CATEGORY_UPDATE_ERROR\",\n {\n keys,\n original,\n category\n }\n );\n }\n };\n\n const deleteCategory = async (params: CategoryStorageOperationsDeleteParams) => {\n const { category } = params;\n const keys = {\n PK: createPartitionKey({\n tenant: category.tenant,\n locale: category.locale\n }),\n SK: createSortKey(category)\n };\n\n try {\n await entity.delete({\n ...category,\n ...keys\n });\n /**\n * Always clear data loader cache when modifying the records.\n */\n dataLoader.clear();\n\n return category;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete category.\",\n ex.code || \"CATEGORY_DELETE_ERROR\",\n {\n keys,\n category\n }\n );\n }\n };\n\n const list = async (params: CategoryStorageOperationsListParams) => {\n const { where, sort, limit } = params;\n\n const { tenant, locale, ...restWhere } = where;\n const queryAllParams: QueryAllParams = {\n entity,\n partitionKey: createPartitionKey({ tenant, locale }),\n options: {\n gt: \" \"\n }\n };\n\n let items: Category[] = [];\n\n try {\n items = await queryAll<Category>(queryAllParams);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not list categories by given parameters.\",\n ex.code || \"CATEGORIES_LIST_ERROR\",\n {\n partitionKey: queryAllParams.partitionKey,\n options: queryAllParams.options\n }\n );\n }\n\n const fields = plugins.byType<CategoryDynamoDbElasticFieldPlugin>(\n CategoryDynamoDbElasticFieldPlugin.type\n );\n\n const filteredItems = filterItems<Category>({\n plugins,\n where: restWhere,\n items,\n fields\n });\n\n const sortedItems = sortItems<Category>({\n items: filteredItems,\n sort,\n fields\n });\n\n return createListResponse({\n items: sortedItems,\n limit: limit || 100000,\n totalCount: filteredItems.length,\n after: null\n });\n };\n\n return {\n dataLoader,\n get,\n create,\n update,\n delete: deleteCategory,\n list\n };\n};\n"],"mappings":"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"}
@@ -1,10 +1,11 @@
1
1
  import { PageBlock } from "@webiny/api-page-builder/types";
2
2
  import { Entity } from "dynamodb-toolbox";
3
+ import { DataLoaderInterface } from "../../types";
3
4
  interface Params {
4
5
  entity: Entity<any>;
5
6
  }
6
7
  declare type DataLoaderGetItem = Pick<PageBlock, "id" | "tenant" | "locale">;
7
- export declare class PageBlockDataLoader {
8
+ export declare class PageBlockDataLoader implements DataLoaderInterface {
8
9
  private _getDataLoader;
9
10
  private readonly entity;
10
11
  constructor(params: Params);
@@ -1 +1 @@
1
- {"version":3,"names":["PageBlockDataLoader","constructor","params","undefined","entity","getOne","item","getDataLoader","load","getAll","items","loadMany","clear","clearAll","_getDataLoader","cacheKeyFn","key","tenant","locale","id","DataLoader","batched","map","getBatch","PK","createPartitionKey","SK","createSortKey","records","batchReadAll","table","results","reduce","collection","result","cleanupItem"],"sources":["dataLoader.ts"],"sourcesContent":["import DataLoader from \"dataloader\";\nimport { batchReadAll } from \"@webiny/db-dynamodb/utils/batchRead\";\nimport { PageBlock } from \"@webiny/api-page-builder/types\";\nimport { cleanupItem } from \"@webiny/db-dynamodb/utils/cleanup\";\nimport { Entity } from \"dynamodb-toolbox\";\nimport { createPartitionKey, createSortKey } from \"./keys\";\n\ninterface Params {\n entity: Entity<any>;\n}\n\ntype DataLoaderGetItem = Pick<PageBlock, \"id\" | \"tenant\" | \"locale\">;\n\nexport class PageBlockDataLoader {\n private _getDataLoader: DataLoader<any, any> | undefined = undefined;\n\n private readonly entity: Entity<any>;\n\n constructor(params: Params) {\n this.entity = params.entity;\n }\n\n public async getOne(item: DataLoaderGetItem): Promise<PageBlock> {\n return await this.getDataLoader().load(item);\n }\n\n public async getAll(items: DataLoaderGetItem[]): Promise<PageBlock[]> {\n return await this.getDataLoader().loadMany(items);\n }\n\n public clear(): void {\n this.getDataLoader().clearAll();\n }\n\n private getDataLoader() {\n if (!this._getDataLoader) {\n const cacheKeyFn = (key: DataLoaderGetItem) => {\n return `T#${key.tenant}#L#${key.locale}#${key.id}`;\n };\n this._getDataLoader = new DataLoader(\n async items => {\n const batched = items.map(item => {\n return this.entity.getBatch({\n PK: createPartitionKey(item),\n SK: createSortKey(item)\n });\n });\n\n const records = await batchReadAll<PageBlock>({\n table: this.entity.table,\n items: batched\n });\n\n const results = records.reduce((collection, result) => {\n if (!result) {\n return collection;\n }\n const key = cacheKeyFn(result);\n collection[key] = cleanupItem(this.entity, result) as PageBlock;\n return collection;\n }, {} as Record<string, PageBlock>);\n return items.map(item => {\n const key = cacheKeyFn(item);\n return results[key] || null;\n });\n },\n {\n cacheKeyFn\n }\n );\n }\n return this._getDataLoader;\n }\n}\n"],"mappings":";;;;;;;;AAAA;AACA;AAEA;AAEA;AAQO,MAAMA,mBAAmB,CAAC;EAK7BC,WAAW,CAACC,MAAc,EAAE;IAAA,sDAJ+BC,SAAS;IAAA;IAKhE,IAAI,CAACC,MAAM,GAAGF,MAAM,CAACE,MAAM;EAC/B;EAEA,MAAaC,MAAM,CAACC,IAAuB,EAAsB;IAC7D,OAAO,MAAM,IAAI,CAACC,aAAa,EAAE,CAACC,IAAI,CAACF,IAAI,CAAC;EAChD;EAEA,MAAaG,MAAM,CAACC,KAA0B,EAAwB;IAClE,OAAO,MAAM,IAAI,CAACH,aAAa,EAAE,CAACI,QAAQ,CAACD,KAAK,CAAC;EACrD;EAEOE,KAAK,GAAS;IACjB,IAAI,CAACL,aAAa,EAAE,CAACM,QAAQ,EAAE;EACnC;EAEQN,aAAa,GAAG;IACpB,IAAI,CAAC,IAAI,CAACO,cAAc,EAAE;MACtB,MAAMC,UAAU,GAAIC,GAAsB,IAAK;QAC3C,OAAQ,KAAIA,GAAG,CAACC,MAAO,MAAKD,GAAG,CAACE,MAAO,IAAGF,GAAG,CAACG,EAAG,EAAC;MACtD,CAAC;MACD,IAAI,CAACL,cAAc,GAAG,IAAIM,mBAAU,CAChC,MAAMV,KAAK,IAAI;QACX,MAAMW,OAAO,GAAGX,KAAK,CAACY,GAAG,CAAChB,IAAI,IAAI;UAC9B,OAAO,IAAI,CAACF,MAAM,CAACmB,QAAQ,CAAC;YACxBC,EAAE,EAAE,IAAAC,wBAAkB,EAACnB,IAAI,CAAC;YAC5BoB,EAAE,EAAE,IAAAC,mBAAa,EAACrB,IAAI;UAC1B,CAAC,CAAC;QACN,CAAC,CAAC;QAEF,MAAMsB,OAAO,GAAG,MAAM,IAAAC,uBAAY,EAAY;UAC1CC,KAAK,EAAE,IAAI,CAAC1B,MAAM,CAAC0B,KAAK;UACxBpB,KAAK,EAAEW;QACX,CAAC,CAAC;QAEF,MAAMU,OAAO,GAAGH,OAAO,CAACI,MAAM,CAAC,CAACC,UAAU,EAAEC,MAAM,KAAK;UACnD,IAAI,CAACA,MAAM,EAAE;YACT,OAAOD,UAAU;UACrB;UACA,MAAMjB,GAAG,GAAGD,UAAU,CAACmB,MAAM,CAAC;UAC9BD,UAAU,CAACjB,GAAG,CAAC,GAAG,IAAAmB,oBAAW,EAAC,IAAI,CAAC/B,MAAM,EAAE8B,MAAM,CAAc;UAC/D,OAAOD,UAAU;QACrB,CAAC,EAAE,CAAC,CAAC,CAA8B;QACnC,OAAOvB,KAAK,CAACY,GAAG,CAAChB,IAAI,IAAI;UACrB,MAAMU,GAAG,GAAGD,UAAU,CAACT,IAAI,CAAC;UAC5B,OAAOyB,OAAO,CAACf,GAAG,CAAC,IAAI,IAAI;QAC/B,CAAC,CAAC;MACN,CAAC,EACD;QACID;MACJ,CAAC,CACJ;IACL;IACA,OAAO,IAAI,CAACD,cAAc;EAC9B;AACJ;AAAC"}
1
+ {"version":3,"names":["PageBlockDataLoader","constructor","params","undefined","entity","getOne","item","getDataLoader","load","getAll","items","loadMany","clear","clearAll","_getDataLoader","cacheKeyFn","key","tenant","locale","id","DataLoader","batched","map","getBatch","PK","createPartitionKey","SK","createSortKey","records","batchReadAll","table","results","reduce","collection","result","cleanupItem"],"sources":["dataLoader.ts"],"sourcesContent":["import DataLoader from \"dataloader\";\nimport { batchReadAll } from \"@webiny/db-dynamodb/utils/batchRead\";\nimport { PageBlock } from \"@webiny/api-page-builder/types\";\nimport { cleanupItem } from \"@webiny/db-dynamodb/utils/cleanup\";\nimport { Entity } from \"dynamodb-toolbox\";\nimport { createPartitionKey, createSortKey } from \"./keys\";\nimport { DataLoaderInterface } from \"~/types\";\n\ninterface Params {\n entity: Entity<any>;\n}\n\ntype DataLoaderGetItem = Pick<PageBlock, \"id\" | \"tenant\" | \"locale\">;\n\nexport class PageBlockDataLoader implements DataLoaderInterface {\n private _getDataLoader: DataLoader<any, any> | undefined = undefined;\n\n private readonly entity: Entity<any>;\n\n constructor(params: Params) {\n this.entity = params.entity;\n }\n\n public async getOne(item: DataLoaderGetItem): Promise<PageBlock> {\n return await this.getDataLoader().load(item);\n }\n\n public async getAll(items: DataLoaderGetItem[]): Promise<PageBlock[]> {\n return await this.getDataLoader().loadMany(items);\n }\n\n public clear(): void {\n this.getDataLoader().clearAll();\n }\n\n private getDataLoader() {\n if (!this._getDataLoader) {\n const cacheKeyFn = (key: DataLoaderGetItem) => {\n return `T#${key.tenant}#L#${key.locale}#${key.id}`;\n };\n this._getDataLoader = new DataLoader(\n async items => {\n const batched = items.map(item => {\n return this.entity.getBatch({\n PK: createPartitionKey(item),\n SK: createSortKey(item)\n });\n });\n\n const records = await batchReadAll<PageBlock>({\n table: this.entity.table,\n items: batched\n });\n\n const results = records.reduce((collection, result) => {\n if (!result) {\n return collection;\n }\n const key = cacheKeyFn(result);\n collection[key] = cleanupItem(this.entity, result) as PageBlock;\n return collection;\n }, {} as Record<string, PageBlock>);\n return items.map(item => {\n const key = cacheKeyFn(item);\n return results[key] || null;\n });\n },\n {\n cacheKeyFn\n }\n );\n }\n return this._getDataLoader;\n }\n}\n"],"mappings":";;;;;;;;AAAA;AACA;AAEA;AAEA;AASO,MAAMA,mBAAmB,CAAgC;EAK5DC,WAAW,CAACC,MAAc,EAAE;IAAA,sDAJ+BC,SAAS;IAAA;IAKhE,IAAI,CAACC,MAAM,GAAGF,MAAM,CAACE,MAAM;EAC/B;EAEA,MAAaC,MAAM,CAACC,IAAuB,EAAsB;IAC7D,OAAO,MAAM,IAAI,CAACC,aAAa,EAAE,CAACC,IAAI,CAACF,IAAI,CAAC;EAChD;EAEA,MAAaG,MAAM,CAACC,KAA0B,EAAwB;IAClE,OAAO,MAAM,IAAI,CAACH,aAAa,EAAE,CAACI,QAAQ,CAACD,KAAK,CAAC;EACrD;EAEOE,KAAK,GAAS;IACjB,IAAI,CAACL,aAAa,EAAE,CAACM,QAAQ,EAAE;EACnC;EAEQN,aAAa,GAAG;IACpB,IAAI,CAAC,IAAI,CAACO,cAAc,EAAE;MACtB,MAAMC,UAAU,GAAIC,GAAsB,IAAK;QAC3C,OAAQ,KAAIA,GAAG,CAACC,MAAO,MAAKD,GAAG,CAACE,MAAO,IAAGF,GAAG,CAACG,EAAG,EAAC;MACtD,CAAC;MACD,IAAI,CAACL,cAAc,GAAG,IAAIM,mBAAU,CAChC,MAAMV,KAAK,IAAI;QACX,MAAMW,OAAO,GAAGX,KAAK,CAACY,GAAG,CAAChB,IAAI,IAAI;UAC9B,OAAO,IAAI,CAACF,MAAM,CAACmB,QAAQ,CAAC;YACxBC,EAAE,EAAE,IAAAC,wBAAkB,EAACnB,IAAI,CAAC;YAC5BoB,EAAE,EAAE,IAAAC,mBAAa,EAACrB,IAAI;UAC1B,CAAC,CAAC;QACN,CAAC,CAAC;QAEF,MAAMsB,OAAO,GAAG,MAAM,IAAAC,uBAAY,EAAY;UAC1CC,KAAK,EAAE,IAAI,CAAC1B,MAAM,CAAC0B,KAAK;UACxBpB,KAAK,EAAEW;QACX,CAAC,CAAC;QAEF,MAAMU,OAAO,GAAGH,OAAO,CAACI,MAAM,CAAC,CAACC,UAAU,EAAEC,MAAM,KAAK;UACnD,IAAI,CAACA,MAAM,EAAE;YACT,OAAOD,UAAU;UACrB;UACA,MAAMjB,GAAG,GAAGD,UAAU,CAACmB,MAAM,CAAC;UAC9BD,UAAU,CAACjB,GAAG,CAAC,GAAG,IAAAmB,oBAAW,EAAC,IAAI,CAAC/B,MAAM,EAAE8B,MAAM,CAAc;UAC/D,OAAOD,UAAU;QACrB,CAAC,EAAE,CAAC,CAAC,CAA8B;QACnC,OAAOvB,KAAK,CAACY,GAAG,CAAChB,IAAI,IAAI;UACrB,MAAMU,GAAG,GAAGD,UAAU,CAACT,IAAI,CAAC;UAC5B,OAAOyB,OAAO,CAACf,GAAG,CAAC,IAAI,IAAI;QAC/B,CAAC,CAAC;MACN,CAAC,EACD;QACID;MACJ,CAAC,CACJ;IACL;IACA,OAAO,IAAI,CAACD,cAAc;EAC9B;AACJ;AAAC"}
@@ -1,6 +1,6 @@
1
- import { PageBlockStorageOperations } from "@webiny/api-page-builder/types";
2
1
  import { Entity } from "dynamodb-toolbox";
3
2
  import { PluginsContainer } from "@webiny/plugins";
3
+ import { PageBlockStorageOperations } from "../../types";
4
4
  export interface CreatePageBlockStorageOperationsParams {
5
5
  entity: Entity<any>;
6
6
  plugins: PluginsContainer;
@@ -168,6 +168,7 @@ const createPageBlockStorageOperations = ({
168
168
  }
169
169
  };
170
170
  return {
171
+ dataLoader,
171
172
  get,
172
173
  list,
173
174
  create,
@@ -1 +1 @@
1
- {"version":3,"names":["createType","createPageBlockStorageOperations","entity","plugins","dataLoader","PageBlockDataLoader","get","params","where","getOne","ex","WebinyError","message","code","list","sort","limit","tenant","locale","restWhere","queryAllParams","partitionKey","createPartitionKey","options","gt","items","queryAll","fields","byType","PageBlockDynamoDbFieldPlugin","type","filteredItems","filterItems","sortedItems","sortItems","createListResponse","totalCount","length","after","create","pageBlock","keys","PK","SK","createSortKey","put","TYPE","clear","update","original","deletePageBlock","delete"],"sources":["index.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport {\n PageBlock,\n PageBlockStorageOperations,\n PageBlockStorageOperationsCreateParams,\n PageBlockStorageOperationsDeleteParams,\n PageBlockStorageOperationsGetParams,\n PageBlockStorageOperationsListParams,\n PageBlockStorageOperationsUpdateParams\n} from \"@webiny/api-page-builder/types\";\nimport { Entity } from \"dynamodb-toolbox\";\nimport { queryAll, QueryAllParams } from \"@webiny/db-dynamodb/utils/query\";\nimport { sortItems } from \"@webiny/db-dynamodb/utils/sort\";\nimport { filterItems } from \"@webiny/db-dynamodb/utils/filter\";\nimport { PageBlockDataLoader } from \"./dataLoader\";\nimport { createListResponse } from \"@webiny/db-dynamodb/utils/listResponse\";\nimport { PageBlockDynamoDbFieldPlugin } from \"~/plugins/definitions/PageBlockDynamoDbFieldPlugin\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport { createPartitionKey, createSortKey } from \"./keys\";\n\nconst createType = (): string => {\n return \"pb.pageBlock\";\n};\n\nexport interface CreatePageBlockStorageOperationsParams {\n entity: Entity<any>;\n plugins: PluginsContainer;\n}\nexport const createPageBlockStorageOperations = ({\n entity,\n plugins\n}: CreatePageBlockStorageOperationsParams): PageBlockStorageOperations => {\n const dataLoader = new PageBlockDataLoader({\n entity\n });\n\n const get = async (params: PageBlockStorageOperationsGetParams) => {\n const { where } = params;\n\n try {\n return await dataLoader.getOne(where);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not load page block by given parameters.\",\n ex.code || \"PAGE_BLOCK_GET_ERROR\",\n {\n where\n }\n );\n }\n };\n\n const list = async (params: PageBlockStorageOperationsListParams) => {\n const { where, sort, limit } = params;\n\n const { tenant, locale, ...restWhere } = where;\n const queryAllParams: QueryAllParams = {\n entity,\n partitionKey: createPartitionKey({ tenant, locale }),\n options: {\n gt: \" \"\n }\n };\n\n let items: PageBlock[] = [];\n\n try {\n items = await queryAll<PageBlock>(queryAllParams);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not list page blocks by given parameters.\",\n ex.code || \"PAGE_BLOCK_LIST_ERROR\",\n {\n partitionKey: queryAllParams.partitionKey,\n options: queryAllParams.options\n }\n );\n }\n\n const fields = plugins.byType<PageBlockDynamoDbFieldPlugin>(\n PageBlockDynamoDbFieldPlugin.type\n );\n\n const filteredItems = filterItems<PageBlock>({\n plugins,\n where: restWhere,\n items,\n fields\n });\n\n const sortedItems = sortItems<PageBlock>({\n items: filteredItems,\n sort,\n fields\n });\n\n return createListResponse({\n items: sortedItems,\n limit: limit || 100000,\n totalCount: filteredItems.length,\n after: null\n });\n };\n\n const create = async (params: PageBlockStorageOperationsCreateParams) => {\n const { pageBlock } = params;\n\n const keys = {\n PK: createPartitionKey({\n tenant: pageBlock.tenant,\n locale: pageBlock.locale\n }),\n SK: createSortKey(pageBlock)\n };\n\n try {\n await entity.put({\n ...pageBlock,\n TYPE: createType(),\n ...keys\n });\n /**\n * Always clear data loader cache when modifying the records.\n */\n dataLoader.clear();\n\n return pageBlock;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create page block.\",\n ex.code || \"PAGE_BLOCK_CREATE_ERROR\",\n {\n keys\n }\n );\n }\n };\n\n const update = async (params: PageBlockStorageOperationsUpdateParams) => {\n const { original, pageBlock } = params;\n const keys = {\n PK: createPartitionKey({\n tenant: original.tenant,\n locale: original.locale\n }),\n SK: createSortKey(pageBlock)\n };\n\n try {\n await entity.put({\n ...pageBlock,\n TYPE: createType(),\n ...keys\n });\n /**\n * Always clear data loader cache when modifying the records.\n */\n dataLoader.clear();\n\n return pageBlock;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update page block.\",\n ex.code || \"PAGE_BLOCK_UPDATE_ERROR\",\n {\n keys,\n original,\n pageBlock\n }\n );\n }\n };\n\n const deletePageBlock = async (params: PageBlockStorageOperationsDeleteParams) => {\n const { pageBlock } = params;\n const keys = {\n PK: createPartitionKey({\n tenant: pageBlock.tenant,\n locale: pageBlock.locale\n }),\n SK: createSortKey(pageBlock)\n };\n\n try {\n await entity.delete({\n ...pageBlock,\n ...keys\n });\n /**\n * Always clear data loader cache when modifying the records.\n */\n dataLoader.clear();\n\n return pageBlock;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete page block.\",\n ex.code || \"PAGE_BLOCK_DELETE_ERROR\",\n {\n keys,\n pageBlock\n }\n );\n }\n };\n\n return {\n get,\n list,\n create,\n update,\n delete: deletePageBlock\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["createType","createPageBlockStorageOperations","entity","plugins","dataLoader","PageBlockDataLoader","get","params","where","getOne","ex","WebinyError","message","code","list","sort","limit","tenant","locale","restWhere","queryAllParams","partitionKey","createPartitionKey","options","gt","items","queryAll","fields","byType","PageBlockDynamoDbFieldPlugin","type","filteredItems","filterItems","sortedItems","sortItems","createListResponse","totalCount","length","after","create","pageBlock","keys","PK","SK","createSortKey","put","TYPE","clear","update","original","deletePageBlock","delete"],"sources":["index.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport {\n PageBlock,\n PageBlockStorageOperationsCreateParams,\n PageBlockStorageOperationsDeleteParams,\n PageBlockStorageOperationsGetParams,\n PageBlockStorageOperationsListParams,\n PageBlockStorageOperationsUpdateParams\n} from \"@webiny/api-page-builder/types\";\nimport { Entity } from \"dynamodb-toolbox\";\nimport { queryAll, QueryAllParams } from \"@webiny/db-dynamodb/utils/query\";\nimport { sortItems } from \"@webiny/db-dynamodb/utils/sort\";\nimport { filterItems } from \"@webiny/db-dynamodb/utils/filter\";\nimport { PageBlockDataLoader } from \"./dataLoader\";\nimport { createListResponse } from \"@webiny/db-dynamodb/utils/listResponse\";\nimport { PageBlockDynamoDbFieldPlugin } from \"~/plugins/definitions/PageBlockDynamoDbFieldPlugin\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport { createPartitionKey, createSortKey } from \"./keys\";\nimport { PageBlockStorageOperations } from \"~/types\";\n\nconst createType = (): string => {\n return \"pb.pageBlock\";\n};\n\nexport interface CreatePageBlockStorageOperationsParams {\n entity: Entity<any>;\n plugins: PluginsContainer;\n}\nexport const createPageBlockStorageOperations = ({\n entity,\n plugins\n}: CreatePageBlockStorageOperationsParams): PageBlockStorageOperations => {\n const dataLoader = new PageBlockDataLoader({\n entity\n });\n\n const get = async (params: PageBlockStorageOperationsGetParams) => {\n const { where } = params;\n\n try {\n return await dataLoader.getOne(where);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not load page block by given parameters.\",\n ex.code || \"PAGE_BLOCK_GET_ERROR\",\n {\n where\n }\n );\n }\n };\n\n const list = async (params: PageBlockStorageOperationsListParams) => {\n const { where, sort, limit } = params;\n\n const { tenant, locale, ...restWhere } = where;\n const queryAllParams: QueryAllParams = {\n entity,\n partitionKey: createPartitionKey({ tenant, locale }),\n options: {\n gt: \" \"\n }\n };\n\n let items: PageBlock[] = [];\n\n try {\n items = await queryAll<PageBlock>(queryAllParams);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not list page blocks by given parameters.\",\n ex.code || \"PAGE_BLOCK_LIST_ERROR\",\n {\n partitionKey: queryAllParams.partitionKey,\n options: queryAllParams.options\n }\n );\n }\n\n const fields = plugins.byType<PageBlockDynamoDbFieldPlugin>(\n PageBlockDynamoDbFieldPlugin.type\n );\n\n const filteredItems = filterItems<PageBlock>({\n plugins,\n where: restWhere,\n items,\n fields\n });\n\n const sortedItems = sortItems<PageBlock>({\n items: filteredItems,\n sort,\n fields\n });\n\n return createListResponse({\n items: sortedItems,\n limit: limit || 100000,\n totalCount: filteredItems.length,\n after: null\n });\n };\n\n const create = async (params: PageBlockStorageOperationsCreateParams) => {\n const { pageBlock } = params;\n\n const keys = {\n PK: createPartitionKey({\n tenant: pageBlock.tenant,\n locale: pageBlock.locale\n }),\n SK: createSortKey(pageBlock)\n };\n\n try {\n await entity.put({\n ...pageBlock,\n TYPE: createType(),\n ...keys\n });\n /**\n * Always clear data loader cache when modifying the records.\n */\n dataLoader.clear();\n\n return pageBlock;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create page block.\",\n ex.code || \"PAGE_BLOCK_CREATE_ERROR\",\n {\n keys\n }\n );\n }\n };\n\n const update = async (params: PageBlockStorageOperationsUpdateParams) => {\n const { original, pageBlock } = params;\n const keys = {\n PK: createPartitionKey({\n tenant: original.tenant,\n locale: original.locale\n }),\n SK: createSortKey(pageBlock)\n };\n\n try {\n await entity.put({\n ...pageBlock,\n TYPE: createType(),\n ...keys\n });\n /**\n * Always clear data loader cache when modifying the records.\n */\n dataLoader.clear();\n\n return pageBlock;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update page block.\",\n ex.code || \"PAGE_BLOCK_UPDATE_ERROR\",\n {\n keys,\n original,\n pageBlock\n }\n );\n }\n };\n\n const deletePageBlock = async (params: PageBlockStorageOperationsDeleteParams) => {\n const { pageBlock } = params;\n const keys = {\n PK: createPartitionKey({\n tenant: pageBlock.tenant,\n locale: pageBlock.locale\n }),\n SK: createSortKey(pageBlock)\n };\n\n try {\n await entity.delete({\n ...pageBlock,\n ...keys\n });\n /**\n * Always clear data loader cache when modifying the records.\n */\n dataLoader.clear();\n\n return pageBlock;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete page block.\",\n ex.code || \"PAGE_BLOCK_DELETE_ERROR\",\n {\n keys,\n pageBlock\n }\n );\n }\n };\n\n return {\n dataLoader,\n get,\n list,\n create,\n update,\n delete: deletePageBlock\n };\n};\n"],"mappings":"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"}
@@ -1,10 +1,11 @@
1
1
  import { PageTemplate } from "@webiny/api-page-builder/types";
2
2
  import { Entity } from "dynamodb-toolbox";
3
+ import { DataLoaderInterface } from "../../types";
3
4
  interface Params {
4
5
  entity: Entity<any>;
5
6
  }
6
7
  declare type DataLoaderGetItem = Pick<PageTemplate, "id" | "tenant" | "locale">;
7
- export declare class PageTemplateDataLoader {
8
+ export declare class PageTemplateDataLoader implements DataLoaderInterface {
8
9
  private _getDataLoader;
9
10
  private readonly entity;
10
11
  constructor(params: Params);
@@ -1 +1 @@
1
- {"version":3,"names":["PageTemplateDataLoader","constructor","params","undefined","entity","getOne","item","getDataLoader","load","getAll","items","loadMany","clear","clearAll","_getDataLoader","cacheKeyFn","key","tenant","locale","id","DataLoader","batched","map","getBatch","PK","createPrimaryPK","SK","records","batchReadAll","table","results","reduce","collection","result","data"],"sources":["dataLoader.ts"],"sourcesContent":["import DataLoader from \"dataloader\";\nimport { batchReadAll } from \"@webiny/db-dynamodb/utils/batchRead\";\nimport { PageTemplate } from \"@webiny/api-page-builder/types\";\nimport { Entity } from \"dynamodb-toolbox\";\nimport { createPrimaryPK } from \"./keys\";\nimport { DataContainer } from \"~/types\";\n\ninterface Params {\n entity: Entity<any>;\n}\n\ntype DataLoaderGetItem = Pick<PageTemplate, \"id\" | \"tenant\" | \"locale\">;\n\nexport class PageTemplateDataLoader {\n private _getDataLoader: DataLoader<any, any> | undefined = undefined;\n\n private readonly entity: Entity<any>;\n\n constructor(params: Params) {\n this.entity = params.entity;\n }\n\n public async getOne(item: DataLoaderGetItem): Promise<PageTemplate> {\n return await this.getDataLoader().load(item);\n }\n\n public async getAll(items: DataLoaderGetItem[]): Promise<PageTemplate[]> {\n return await this.getDataLoader().loadMany(items);\n }\n\n public clear(): void {\n this.getDataLoader().clearAll();\n }\n\n private getDataLoader() {\n if (!this._getDataLoader) {\n const cacheKeyFn = (key: DataLoaderGetItem) => {\n return `T#${key.tenant}#L#${key.locale}#${key.id}`;\n };\n this._getDataLoader = new DataLoader(\n async items => {\n const batched = items.map(item => {\n return this.entity.getBatch({\n PK: createPrimaryPK(item),\n SK: \"A\"\n });\n });\n\n const records = await batchReadAll<DataContainer<PageTemplate>>({\n table: this.entity.table,\n items: batched\n });\n\n const results = records.reduce((collection, result) => {\n if (!result) {\n return collection;\n }\n const key = cacheKeyFn(result.data);\n collection[key] = result.data as PageTemplate;\n return collection;\n }, {} as Record<string, PageTemplate>);\n return items.map(item => {\n const key = cacheKeyFn(item);\n return results[key] || null;\n });\n },\n {\n cacheKeyFn\n }\n );\n }\n return this._getDataLoader;\n }\n}\n"],"mappings":";;;;;;;;AAAA;AACA;AAGA;AASO,MAAMA,sBAAsB,CAAC;EAKhCC,WAAW,CAACC,MAAc,EAAE;IAAA,sDAJ+BC,SAAS;IAAA;IAKhE,IAAI,CAACC,MAAM,GAAGF,MAAM,CAACE,MAAM;EAC/B;EAEA,MAAaC,MAAM,CAACC,IAAuB,EAAyB;IAChE,OAAO,MAAM,IAAI,CAACC,aAAa,EAAE,CAACC,IAAI,CAACF,IAAI,CAAC;EAChD;EAEA,MAAaG,MAAM,CAACC,KAA0B,EAA2B;IACrE,OAAO,MAAM,IAAI,CAACH,aAAa,EAAE,CAACI,QAAQ,CAACD,KAAK,CAAC;EACrD;EAEOE,KAAK,GAAS;IACjB,IAAI,CAACL,aAAa,EAAE,CAACM,QAAQ,EAAE;EACnC;EAEQN,aAAa,GAAG;IACpB,IAAI,CAAC,IAAI,CAACO,cAAc,EAAE;MACtB,MAAMC,UAAU,GAAIC,GAAsB,IAAK;QAC3C,OAAQ,KAAIA,GAAG,CAACC,MAAO,MAAKD,GAAG,CAACE,MAAO,IAAGF,GAAG,CAACG,EAAG,EAAC;MACtD,CAAC;MACD,IAAI,CAACL,cAAc,GAAG,IAAIM,mBAAU,CAChC,MAAMV,KAAK,IAAI;QACX,MAAMW,OAAO,GAAGX,KAAK,CAACY,GAAG,CAAChB,IAAI,IAAI;UAC9B,OAAO,IAAI,CAACF,MAAM,CAACmB,QAAQ,CAAC;YACxBC,EAAE,EAAE,IAAAC,qBAAe,EAACnB,IAAI,CAAC;YACzBoB,EAAE,EAAE;UACR,CAAC,CAAC;QACN,CAAC,CAAC;QAEF,MAAMC,OAAO,GAAG,MAAM,IAAAC,uBAAY,EAA8B;UAC5DC,KAAK,EAAE,IAAI,CAACzB,MAAM,CAACyB,KAAK;UACxBnB,KAAK,EAAEW;QACX,CAAC,CAAC;QAEF,MAAMS,OAAO,GAAGH,OAAO,CAACI,MAAM,CAAC,CAACC,UAAU,EAAEC,MAAM,KAAK;UACnD,IAAI,CAACA,MAAM,EAAE;YACT,OAAOD,UAAU;UACrB;UACA,MAAMhB,GAAG,GAAGD,UAAU,CAACkB,MAAM,CAACC,IAAI,CAAC;UACnCF,UAAU,CAAChB,GAAG,CAAC,GAAGiB,MAAM,CAACC,IAAoB;UAC7C,OAAOF,UAAU;QACrB,CAAC,EAAE,CAAC,CAAC,CAAiC;QACtC,OAAOtB,KAAK,CAACY,GAAG,CAAChB,IAAI,IAAI;UACrB,MAAMU,GAAG,GAAGD,UAAU,CAACT,IAAI,CAAC;UAC5B,OAAOwB,OAAO,CAACd,GAAG,CAAC,IAAI,IAAI;QAC/B,CAAC,CAAC;MACN,CAAC,EACD;QACID;MACJ,CAAC,CACJ;IACL;IACA,OAAO,IAAI,CAACD,cAAc;EAC9B;AACJ;AAAC"}
1
+ {"version":3,"names":["PageTemplateDataLoader","constructor","params","undefined","entity","getOne","item","getDataLoader","load","getAll","items","loadMany","clear","clearAll","_getDataLoader","cacheKeyFn","key","tenant","locale","id","DataLoader","batched","map","getBatch","PK","createPrimaryPK","SK","records","batchReadAll","table","results","reduce","collection","result","data"],"sources":["dataLoader.ts"],"sourcesContent":["import DataLoader from \"dataloader\";\nimport { batchReadAll } from \"@webiny/db-dynamodb/utils/batchRead\";\nimport { PageTemplate } from \"@webiny/api-page-builder/types\";\nimport { Entity } from \"dynamodb-toolbox\";\nimport { createPrimaryPK } from \"./keys\";\nimport { DataContainer, DataLoaderInterface } from \"~/types\";\n\ninterface Params {\n entity: Entity<any>;\n}\n\ntype DataLoaderGetItem = Pick<PageTemplate, \"id\" | \"tenant\" | \"locale\">;\n\nexport class PageTemplateDataLoader implements DataLoaderInterface {\n private _getDataLoader: DataLoader<any, any> | undefined = undefined;\n\n private readonly entity: Entity<any>;\n\n constructor(params: Params) {\n this.entity = params.entity;\n }\n\n public async getOne(item: DataLoaderGetItem): Promise<PageTemplate> {\n return await this.getDataLoader().load(item);\n }\n\n public async getAll(items: DataLoaderGetItem[]): Promise<PageTemplate[]> {\n return await this.getDataLoader().loadMany(items);\n }\n\n public clear(): void {\n this.getDataLoader().clearAll();\n }\n\n private getDataLoader() {\n if (!this._getDataLoader) {\n const cacheKeyFn = (key: DataLoaderGetItem) => {\n return `T#${key.tenant}#L#${key.locale}#${key.id}`;\n };\n this._getDataLoader = new DataLoader(\n async items => {\n const batched = items.map(item => {\n return this.entity.getBatch({\n PK: createPrimaryPK(item),\n SK: \"A\"\n });\n });\n\n const records = await batchReadAll<DataContainer<PageTemplate>>({\n table: this.entity.table,\n items: batched\n });\n\n const results = records.reduce((collection, result) => {\n if (!result) {\n return collection;\n }\n const key = cacheKeyFn(result.data);\n collection[key] = result.data as PageTemplate;\n return collection;\n }, {} as Record<string, PageTemplate>);\n return items.map(item => {\n const key = cacheKeyFn(item);\n return results[key] || null;\n });\n },\n {\n cacheKeyFn\n }\n );\n }\n return this._getDataLoader;\n }\n}\n"],"mappings":";;;;;;;;AAAA;AACA;AAGA;AASO,MAAMA,sBAAsB,CAAgC;EAK/DC,WAAW,CAACC,MAAc,EAAE;IAAA,sDAJ+BC,SAAS;IAAA;IAKhE,IAAI,CAACC,MAAM,GAAGF,MAAM,CAACE,MAAM;EAC/B;EAEA,MAAaC,MAAM,CAACC,IAAuB,EAAyB;IAChE,OAAO,MAAM,IAAI,CAACC,aAAa,EAAE,CAACC,IAAI,CAACF,IAAI,CAAC;EAChD;EAEA,MAAaG,MAAM,CAACC,KAA0B,EAA2B;IACrE,OAAO,MAAM,IAAI,CAACH,aAAa,EAAE,CAACI,QAAQ,CAACD,KAAK,CAAC;EACrD;EAEOE,KAAK,GAAS;IACjB,IAAI,CAACL,aAAa,EAAE,CAACM,QAAQ,EAAE;EACnC;EAEQN,aAAa,GAAG;IACpB,IAAI,CAAC,IAAI,CAACO,cAAc,EAAE;MACtB,MAAMC,UAAU,GAAIC,GAAsB,IAAK;QAC3C,OAAQ,KAAIA,GAAG,CAACC,MAAO,MAAKD,GAAG,CAACE,MAAO,IAAGF,GAAG,CAACG,EAAG,EAAC;MACtD,CAAC;MACD,IAAI,CAACL,cAAc,GAAG,IAAIM,mBAAU,CAChC,MAAMV,KAAK,IAAI;QACX,MAAMW,OAAO,GAAGX,KAAK,CAACY,GAAG,CAAChB,IAAI,IAAI;UAC9B,OAAO,IAAI,CAACF,MAAM,CAACmB,QAAQ,CAAC;YACxBC,EAAE,EAAE,IAAAC,qBAAe,EAACnB,IAAI,CAAC;YACzBoB,EAAE,EAAE;UACR,CAAC,CAAC;QACN,CAAC,CAAC;QAEF,MAAMC,OAAO,GAAG,MAAM,IAAAC,uBAAY,EAA8B;UAC5DC,KAAK,EAAE,IAAI,CAACzB,MAAM,CAACyB,KAAK;UACxBnB,KAAK,EAAEW;QACX,CAAC,CAAC;QAEF,MAAMS,OAAO,GAAGH,OAAO,CAACI,MAAM,CAAC,CAACC,UAAU,EAAEC,MAAM,KAAK;UACnD,IAAI,CAACA,MAAM,EAAE;YACT,OAAOD,UAAU;UACrB;UACA,MAAMhB,GAAG,GAAGD,UAAU,CAACkB,MAAM,CAACC,IAAI,CAAC;UACnCF,UAAU,CAAChB,GAAG,CAAC,GAAGiB,MAAM,CAACC,IAAoB;UAC7C,OAAOF,UAAU;QACrB,CAAC,EAAE,CAAC,CAAC,CAAiC;QACtC,OAAOtB,KAAK,CAACY,GAAG,CAAChB,IAAI,IAAI;UACrB,MAAMU,GAAG,GAAGD,UAAU,CAACT,IAAI,CAAC;UAC5B,OAAOwB,OAAO,CAACd,GAAG,CAAC,IAAI,IAAI;QAC/B,CAAC,CAAC;MACN,CAAC,EACD;QACID;MACJ,CAAC,CACJ;IACL;IACA,OAAO,IAAI,CAACD,cAAc;EAC9B;AACJ;AAAC"}
@@ -1,6 +1,6 @@
1
- import { PageTemplateStorageOperations } from "@webiny/api-page-builder/types";
2
1
  import { Entity } from "dynamodb-toolbox";
3
2
  import { PluginsContainer } from "@webiny/plugins";
3
+ import { PageTemplateStorageOperations } from "../../types";
4
4
  export interface CreatePageTemplateStorageOperationsParams {
5
5
  entity: Entity<any>;
6
6
  plugins: PluginsContainer;
@@ -183,6 +183,7 @@ const createPageTemplateStorageOperations = ({
183
183
  }
184
184
  };
185
185
  return {
186
+ dataLoader,
186
187
  get,
187
188
  list,
188
189
  create,
@@ -1 +1 @@
1
- {"version":3,"names":["createType","createPageTemplateStorageOperations","entity","plugins","dataLoader","PageTemplateDataLoader","get","params","where","id","getOne","tenant","locale","result","queryOne","partitionKey","createGSI1PK","options","index","eq","slug","data","ex","WebinyError","message","code","list","sort","limit","restWhere","queryAllParams","gt","items","queryAll","fields","byType","PageTemplateDynamoDbElasticFieldPlugin","type","filteredItems","filterItems","sortedItems","sortItems","createListResponse","map","item","filter","Boolean","totalCount","length","after","create","pageTemplate","keys","PK","createPrimaryPK","SK","GSI1_PK","GSI1_SK","put","TYPE","clear","update","original","deletePageTemplate","delete"],"sources":["index.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport {\n PageTemplate,\n PageTemplateStorageOperations,\n PageTemplateStorageOperationsCreateParams,\n PageTemplateStorageOperationsDeleteParams,\n PageTemplateStorageOperationsGetParams,\n PageTemplateStorageOperationsListParams,\n PageTemplateStorageOperationsUpdateParams\n} from \"@webiny/api-page-builder/types\";\nimport { Entity } from \"dynamodb-toolbox\";\nimport { queryAll, QueryAllParams, queryOne } from \"@webiny/db-dynamodb/utils/query\";\nimport { sortItems } from \"@webiny/db-dynamodb/utils/sort\";\nimport { filterItems } from \"@webiny/db-dynamodb/utils/filter\";\nimport { PageTemplateDataLoader } from \"./dataLoader\";\nimport { createListResponse } from \"@webiny/db-dynamodb/utils/listResponse\";\nimport { PageTemplateDynamoDbElasticFieldPlugin } from \"~/plugins/definitions/PageTemplateDynamoDbElasticFieldPlugin\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport { createGSI1PK, createPrimaryPK } from \"./keys\";\nimport { DataContainer } from \"~/types\";\n\nconst createType = (): string => {\n return \"pb.pageTemplate\";\n};\n\nexport interface CreatePageTemplateStorageOperationsParams {\n entity: Entity<any>;\n plugins: PluginsContainer;\n}\nexport const createPageTemplateStorageOperations = ({\n entity,\n plugins\n}: CreatePageTemplateStorageOperationsParams): PageTemplateStorageOperations => {\n const dataLoader = new PageTemplateDataLoader({\n entity\n });\n\n const get = async (params: PageTemplateStorageOperationsGetParams) => {\n const { where } = params;\n\n try {\n if (where.id) {\n return await dataLoader.getOne({\n id: where.id,\n tenant: where.tenant,\n locale: where.locale\n });\n }\n\n const result = await queryOne<{ data: PageTemplate }>({\n entity,\n partitionKey: createGSI1PK(where),\n options: {\n index: \"GSI1\",\n eq: where.slug\n }\n });\n\n return result?.data || null;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not load page template by given parameters.\",\n ex.code || \"PAGE_TEMPLATE_GET_ERROR\",\n {\n where\n }\n );\n }\n };\n\n const list = async (params: PageTemplateStorageOperationsListParams) => {\n const { where, sort, limit } = params;\n\n const { tenant, locale, ...restWhere } = where;\n const queryAllParams: QueryAllParams = {\n entity,\n partitionKey: createGSI1PK({ tenant, locale }),\n options: {\n index: \"GSI1\",\n gt: \" \"\n }\n };\n\n let items: DataContainer<PageTemplate>[] = [];\n\n try {\n items = await queryAll<DataContainer<PageTemplate>>(queryAllParams);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not list page templates by given parameters.\",\n ex.code || \"PAGE_TEMPLATE_LIST_ERROR\",\n {\n partitionKey: queryAllParams.partitionKey,\n options: queryAllParams.options\n }\n );\n }\n\n const fields = plugins.byType<PageTemplateDynamoDbElasticFieldPlugin>(\n PageTemplateDynamoDbElasticFieldPlugin.type\n );\n\n const filteredItems = filterItems<DataContainer<PageTemplate>>({\n plugins,\n where: restWhere,\n items,\n fields\n });\n\n const sortedItems = sortItems<DataContainer<PageTemplate>>({\n items: filteredItems,\n sort,\n fields\n });\n\n return createListResponse({\n items: sortedItems.map(item => item?.data).filter(Boolean),\n limit: limit || 100000,\n totalCount: filteredItems.length,\n after: null\n });\n };\n\n const create = async (params: PageTemplateStorageOperationsCreateParams) => {\n const { pageTemplate } = params;\n\n const keys = {\n PK: createPrimaryPK(pageTemplate),\n SK: \"A\",\n GSI1_PK: createGSI1PK(pageTemplate),\n GSI1_SK: pageTemplate.slug\n };\n\n try {\n await entity.put({\n data: pageTemplate,\n TYPE: createType(),\n ...keys\n });\n /**\n * Always clear data loader cache when modifying the records.\n */\n dataLoader.clear();\n\n return pageTemplate;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create page template.\",\n ex.code || \"PAGE_TEMPLATE_CREATE_ERROR\",\n {\n keys\n }\n );\n }\n };\n\n const update = async (params: PageTemplateStorageOperationsUpdateParams) => {\n const { original, pageTemplate } = params;\n const keys = {\n PK: createPrimaryPK(pageTemplate),\n SK: \"A\",\n GSI1_PK: createGSI1PK(pageTemplate),\n GSI1_SK: pageTemplate.slug\n };\n\n try {\n await entity.put({\n data: pageTemplate,\n TYPE: createType(),\n ...keys\n });\n /**\n * Always clear data loader cache when modifying the records.\n */\n dataLoader.clear();\n\n return pageTemplate;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update page template.\",\n ex.code || \"PAGE_TEMPLATE_UPDATE_ERROR\",\n {\n keys,\n original,\n pageTemplate\n }\n );\n }\n };\n\n const deletePageTemplate = async (params: PageTemplateStorageOperationsDeleteParams) => {\n const { pageTemplate } = params;\n const keys = {\n PK: createPrimaryPK(pageTemplate),\n SK: \"A\"\n };\n\n try {\n await entity.delete({\n data: pageTemplate,\n ...keys\n });\n /**\n * Always clear data loader cache when modifying the records.\n */\n dataLoader.clear();\n\n return pageTemplate;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete page template.\",\n ex.code || \"PAGE_TEMPLATE_DELETE_ERROR\",\n {\n keys,\n pageTemplate\n }\n );\n }\n };\n\n return {\n get,\n list,\n create,\n update,\n delete: deletePageTemplate\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["createType","createPageTemplateStorageOperations","entity","plugins","dataLoader","PageTemplateDataLoader","get","params","where","id","getOne","tenant","locale","result","queryOne","partitionKey","createGSI1PK","options","index","eq","slug","data","ex","WebinyError","message","code","list","sort","limit","restWhere","queryAllParams","gt","items","queryAll","fields","byType","PageTemplateDynamoDbElasticFieldPlugin","type","filteredItems","filterItems","sortedItems","sortItems","createListResponse","map","item","filter","Boolean","totalCount","length","after","create","pageTemplate","keys","PK","createPrimaryPK","SK","GSI1_PK","GSI1_SK","put","TYPE","clear","update","original","deletePageTemplate","delete"],"sources":["index.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport {\n PageTemplate,\n PageTemplateStorageOperationsCreateParams,\n PageTemplateStorageOperationsDeleteParams,\n PageTemplateStorageOperationsGetParams,\n PageTemplateStorageOperationsListParams,\n PageTemplateStorageOperationsUpdateParams\n} from \"@webiny/api-page-builder/types\";\nimport { Entity } from \"dynamodb-toolbox\";\nimport { queryAll, QueryAllParams, queryOne } from \"@webiny/db-dynamodb/utils/query\";\nimport { sortItems } from \"@webiny/db-dynamodb/utils/sort\";\nimport { filterItems } from \"@webiny/db-dynamodb/utils/filter\";\nimport { PageTemplateDataLoader } from \"./dataLoader\";\nimport { createListResponse } from \"@webiny/db-dynamodb/utils/listResponse\";\nimport { PageTemplateDynamoDbElasticFieldPlugin } from \"~/plugins/definitions/PageTemplateDynamoDbElasticFieldPlugin\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport { createGSI1PK, createPrimaryPK } from \"./keys\";\nimport { DataContainer, PageTemplateStorageOperations } from \"~/types\";\n\nconst createType = (): string => {\n return \"pb.pageTemplate\";\n};\n\nexport interface CreatePageTemplateStorageOperationsParams {\n entity: Entity<any>;\n plugins: PluginsContainer;\n}\nexport const createPageTemplateStorageOperations = ({\n entity,\n plugins\n}: CreatePageTemplateStorageOperationsParams): PageTemplateStorageOperations => {\n const dataLoader = new PageTemplateDataLoader({\n entity\n });\n\n const get = async (params: PageTemplateStorageOperationsGetParams) => {\n const { where } = params;\n\n try {\n if (where.id) {\n return await dataLoader.getOne({\n id: where.id,\n tenant: where.tenant,\n locale: where.locale\n });\n }\n\n const result = await queryOne<{ data: PageTemplate }>({\n entity,\n partitionKey: createGSI1PK(where),\n options: {\n index: \"GSI1\",\n eq: where.slug\n }\n });\n\n return result?.data || null;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not load page template by given parameters.\",\n ex.code || \"PAGE_TEMPLATE_GET_ERROR\",\n {\n where\n }\n );\n }\n };\n\n const list = async (params: PageTemplateStorageOperationsListParams) => {\n const { where, sort, limit } = params;\n\n const { tenant, locale, ...restWhere } = where;\n const queryAllParams: QueryAllParams = {\n entity,\n partitionKey: createGSI1PK({ tenant, locale }),\n options: {\n index: \"GSI1\",\n gt: \" \"\n }\n };\n\n let items: DataContainer<PageTemplate>[] = [];\n\n try {\n items = await queryAll<DataContainer<PageTemplate>>(queryAllParams);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not list page templates by given parameters.\",\n ex.code || \"PAGE_TEMPLATE_LIST_ERROR\",\n {\n partitionKey: queryAllParams.partitionKey,\n options: queryAllParams.options\n }\n );\n }\n\n const fields = plugins.byType<PageTemplateDynamoDbElasticFieldPlugin>(\n PageTemplateDynamoDbElasticFieldPlugin.type\n );\n\n const filteredItems = filterItems<DataContainer<PageTemplate>>({\n plugins,\n where: restWhere,\n items,\n fields\n });\n\n const sortedItems = sortItems<DataContainer<PageTemplate>>({\n items: filteredItems,\n sort,\n fields\n });\n\n return createListResponse({\n items: sortedItems.map(item => item?.data).filter(Boolean),\n limit: limit || 100000,\n totalCount: filteredItems.length,\n after: null\n });\n };\n\n const create = async (params: PageTemplateStorageOperationsCreateParams) => {\n const { pageTemplate } = params;\n\n const keys = {\n PK: createPrimaryPK(pageTemplate),\n SK: \"A\",\n GSI1_PK: createGSI1PK(pageTemplate),\n GSI1_SK: pageTemplate.slug\n };\n\n try {\n await entity.put({\n data: pageTemplate,\n TYPE: createType(),\n ...keys\n });\n /**\n * Always clear data loader cache when modifying the records.\n */\n dataLoader.clear();\n\n return pageTemplate;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create page template.\",\n ex.code || \"PAGE_TEMPLATE_CREATE_ERROR\",\n {\n keys\n }\n );\n }\n };\n\n const update = async (params: PageTemplateStorageOperationsUpdateParams) => {\n const { original, pageTemplate } = params;\n const keys = {\n PK: createPrimaryPK(pageTemplate),\n SK: \"A\",\n GSI1_PK: createGSI1PK(pageTemplate),\n GSI1_SK: pageTemplate.slug\n };\n\n try {\n await entity.put({\n data: pageTemplate,\n TYPE: createType(),\n ...keys\n });\n /**\n * Always clear data loader cache when modifying the records.\n */\n dataLoader.clear();\n\n return pageTemplate;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update page template.\",\n ex.code || \"PAGE_TEMPLATE_UPDATE_ERROR\",\n {\n keys,\n original,\n pageTemplate\n }\n );\n }\n };\n\n const deletePageTemplate = async (params: PageTemplateStorageOperationsDeleteParams) => {\n const { pageTemplate } = params;\n const keys = {\n PK: createPrimaryPK(pageTemplate),\n SK: \"A\"\n };\n\n try {\n await entity.delete({\n data: pageTemplate,\n ...keys\n });\n /**\n * Always clear data loader cache when modifying the records.\n */\n dataLoader.clear();\n\n return pageTemplate;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete page template.\",\n ex.code || \"PAGE_TEMPLATE_DELETE_ERROR\",\n {\n keys,\n pageTemplate\n }\n );\n }\n };\n\n return {\n dataLoader,\n get,\n list,\n create,\n update,\n delete: deletePageTemplate\n };\n};\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/api-page-builder-so-ddb-es",
3
- "version": "5.35.0",
3
+ "version": "5.35.1",
4
4
  "main": "index.js",
5
5
  "keywords": [
6
6
  "@webiny/api-page-builder",
@@ -18,52 +18,52 @@
18
18
  "license": "MIT",
19
19
  "dependencies": {
20
20
  "@babel/runtime": "7.20.13",
21
- "@webiny/api-elasticsearch": "5.35.0",
22
- "@webiny/api-page-builder": "5.35.0",
23
- "@webiny/db-dynamodb": "5.35.0",
24
- "@webiny/error": "5.35.0",
25
- "@webiny/handler-db": "5.35.0",
26
- "@webiny/plugins": "5.35.0",
27
- "@webiny/utils": "5.35.0",
21
+ "@webiny/api-elasticsearch": "^5.35.1",
22
+ "@webiny/api-page-builder": "^5.35.1",
23
+ "@webiny/db-dynamodb": "^5.35.1",
24
+ "@webiny/error": "^5.35.1",
25
+ "@webiny/handler-db": "^5.35.1",
26
+ "@webiny/plugins": "^5.35.1",
27
+ "@webiny/utils": "^5.35.1",
28
28
  "dataloader": "2.2.1",
29
29
  "dynamodb-toolbox": "0.3.5",
30
30
  "elastic-ts": "0.8.0",
31
31
  "lodash": "4.17.21"
32
32
  },
33
33
  "devDependencies": {
34
- "@babel/cli": "^7.19.3",
35
- "@babel/core": "^7.19.3",
36
- "@babel/preset-env": "^7.19.4",
37
- "@babel/preset-typescript": "^7.18.6",
34
+ "@babel/cli": "7.20.7",
35
+ "@babel/core": "7.20.12",
36
+ "@babel/preset-env": "7.20.2",
37
+ "@babel/preset-typescript": "7.18.6",
38
38
  "@elastic/elasticsearch": "7.12.0",
39
39
  "@elastic/elasticsearch-mock": "0.3.0",
40
- "@webiny/api": "^5.35.0",
41
- "@webiny/api-aco": "^5.35.0",
42
- "@webiny/api-dynamodb-to-elasticsearch": "^5.35.0",
43
- "@webiny/api-file-manager": "^5.35.0",
44
- "@webiny/api-file-manager-ddb": "^5.35.0",
45
- "@webiny/api-headless-cms": "^5.35.0",
46
- "@webiny/api-headless-cms-ddb-es": "^5.35.0",
47
- "@webiny/api-i18n": "^5.35.0",
48
- "@webiny/api-i18n-ddb": "^5.35.0",
49
- "@webiny/api-page-builder-aco": "^5.35.0",
50
- "@webiny/api-prerendering-service": "^5.35.0",
51
- "@webiny/api-security": "^5.35.0",
52
- "@webiny/api-security-so-ddb": "^5.35.0",
53
- "@webiny/api-tenancy": "^5.35.0",
54
- "@webiny/api-tenancy-so-ddb": "^5.35.0",
55
- "@webiny/api-wcp": "^5.35.0",
56
- "@webiny/cli": "^5.35.0",
57
- "@webiny/handler": "^5.35.0",
58
- "@webiny/handler-aws": "^5.35.0",
59
- "@webiny/handler-graphql": "^5.35.0",
60
- "@webiny/project-utils": "^5.35.0",
61
- "graphql": "^15.8.0",
62
- "jest": "^28.1.0",
63
- "jest-dynalite": "^3.2.0",
64
- "jest-environment-node": "^27.0.6",
65
- "rimraf": "^3.0.2",
66
- "ttypescript": "^1.5.12",
40
+ "@webiny/api": "^5.35.1",
41
+ "@webiny/api-aco": "^5.35.1",
42
+ "@webiny/api-dynamodb-to-elasticsearch": "^5.35.1",
43
+ "@webiny/api-file-manager": "^5.35.1",
44
+ "@webiny/api-file-manager-ddb": "^5.35.1",
45
+ "@webiny/api-headless-cms": "^5.35.1",
46
+ "@webiny/api-headless-cms-ddb-es": "^5.35.1",
47
+ "@webiny/api-i18n": "^5.35.1",
48
+ "@webiny/api-i18n-ddb": "^5.35.1",
49
+ "@webiny/api-page-builder-aco": "^5.35.1",
50
+ "@webiny/api-prerendering-service": "^5.35.1",
51
+ "@webiny/api-security": "^5.35.1",
52
+ "@webiny/api-security-so-ddb": "^5.35.1",
53
+ "@webiny/api-tenancy": "^5.35.1",
54
+ "@webiny/api-tenancy-so-ddb": "^5.35.1",
55
+ "@webiny/api-wcp": "^5.35.1",
56
+ "@webiny/cli": "^5.35.1",
57
+ "@webiny/handler": "^5.35.1",
58
+ "@webiny/handler-aws": "^5.35.1",
59
+ "@webiny/handler-graphql": "^5.35.1",
60
+ "@webiny/project-utils": "^5.35.1",
61
+ "graphql": "15.8.0",
62
+ "jest": "28.1.3",
63
+ "jest-dynalite": "3.6.1",
64
+ "jest-environment-node": "27.5.1",
65
+ "rimraf": "3.0.2",
66
+ "ttypescript": "1.5.15",
67
67
  "typescript": "4.7.4"
68
68
  },
69
69
  "publishConfig": {
@@ -74,5 +74,5 @@
74
74
  "build": "yarn webiny run build",
75
75
  "watch": "yarn webiny run watch"
76
76
  },
77
- "gitHead": "948cd1e05978e0ed25137ace7dd6c15ed0bf2cca"
77
+ "gitHead": "d6a257ebbb9e7aeccfaa33a7f83301cf1919b082"
78
78
  }
package/types.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { PageBuilderStorageOperations as BasePageBuilderStorageOperations } from "@webiny/api-page-builder/types";
1
+ import { BlockCategoryStorageOperations as BaseBlockCategoryStorageOperations, CategoryStorageOperations as BaseCategoryStorageOperations, PageBlockStorageOperations as BasePageBlockStorageOperations, PageBuilderStorageOperations as BasePageBuilderStorageOperations, PageTemplateStorageOperations as BasePageTemplateStorageOperations } from "@webiny/api-page-builder/types";
2
2
  import { Entity, Table } from "dynamodb-toolbox";
3
3
  import { DocumentClient } from "aws-sdk/clients/dynamodb";
4
4
  import { Client } from "@elastic/elasticsearch";
@@ -44,3 +44,18 @@ export interface DataContainer<T> {
44
44
  TYPE: string;
45
45
  data: T;
46
46
  }
47
+ export interface DataLoaderInterface {
48
+ clear: () => void;
49
+ }
50
+ export interface PageTemplateStorageOperations extends BasePageTemplateStorageOperations {
51
+ dataLoader: DataLoaderInterface;
52
+ }
53
+ export interface BlockCategoryStorageOperations extends BaseBlockCategoryStorageOperations {
54
+ dataLoader: DataLoaderInterface;
55
+ }
56
+ export interface CategoryStorageOperations extends BaseCategoryStorageOperations {
57
+ dataLoader: DataLoaderInterface;
58
+ }
59
+ export interface PageBlockStorageOperations extends BasePageBlockStorageOperations {
60
+ dataLoader: DataLoaderInterface;
61
+ }
package/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["ENTITIES"],"sources":["types.ts"],"sourcesContent":["import { PageBuilderStorageOperations as BasePageBuilderStorageOperations } from \"@webiny/api-page-builder/types\";\nimport { Entity, Table } from \"dynamodb-toolbox\";\nimport { DocumentClient } from \"aws-sdk/clients/dynamodb\";\nimport { Client } from \"@elastic/elasticsearch\";\nimport { PluginCollection } from \"@webiny/plugins/types\";\nimport { DynamoDBTypes, TableConstructor } from \"dynamodb-toolbox/dist/classes/Table\";\nimport {\n EntityAttributeConfig,\n EntityCompositeAttributes\n} from \"dynamodb-toolbox/dist/classes/Entity\";\n\nexport type AttributeDefinition = DynamoDBTypes | EntityAttributeConfig | EntityCompositeAttributes;\n\nexport type Attributes = Record<string, AttributeDefinition>;\n\nexport enum ENTITIES {\n SYSTEM = \"PbSystem\",\n SETTINGS = \"PbSettings\",\n CATEGORIES = \"PbCategories\",\n MENUS = \"PbMenus\",\n PAGE_ELEMENTS = \"PbPageElements\",\n PAGES = \"PbPages\",\n PAGES_ES = \"PbPagesEs\",\n BLOCK_CATEGORIES = \"PbBlockCategories\",\n PAGE_BLOCKS = \"PbPageBlocks\",\n PAGE_TEMPLATES = \"PbPageTemplates\"\n}\n\nexport interface TableModifier {\n (table: TableConstructor): TableConstructor;\n}\n\nexport interface PageBuilderStorageOperations extends BasePageBuilderStorageOperations {\n getTable: () => Table;\n getEsTable: () => Table;\n getEntities: () => Record<\n | \"system\"\n | \"settings\"\n | \"categories\"\n | \"menus\"\n | \"pageElements\"\n | \"pages\"\n | \"pagesEs\"\n | \"blockCategories\"\n | \"pageBlocks\"\n | \"pageTemplates\",\n Entity<any>\n >;\n}\n\nexport interface StorageOperationsFactoryParams {\n documentClient: DocumentClient;\n elasticsearch: Client;\n table?: TableModifier;\n esTable?: TableModifier;\n attributes?: Record<ENTITIES, Attributes>;\n plugins?: PluginCollection;\n}\n\nexport interface StorageOperationsFactory {\n (params: StorageOperationsFactoryParams): PageBuilderStorageOperations;\n}\n\nexport interface DataContainer<T> {\n PK: string;\n SK: string;\n TYPE: string;\n data: T;\n}\n"],"mappings":";;;;;;IAeYA,QAAQ;AAAA;AAAA,WAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;AAAA,GAARA,QAAQ,wBAARA,QAAQ"}
1
+ {"version":3,"names":["ENTITIES"],"sources":["types.ts"],"sourcesContent":["import {\n BlockCategoryStorageOperations as BaseBlockCategoryStorageOperations,\n CategoryStorageOperations as BaseCategoryStorageOperations,\n PageBlockStorageOperations as BasePageBlockStorageOperations,\n PageBuilderStorageOperations as BasePageBuilderStorageOperations,\n PageTemplateStorageOperations as BasePageTemplateStorageOperations\n} from \"@webiny/api-page-builder/types\";\nimport { Entity, Table } from \"dynamodb-toolbox\";\nimport { DocumentClient } from \"aws-sdk/clients/dynamodb\";\nimport { Client } from \"@elastic/elasticsearch\";\nimport { PluginCollection } from \"@webiny/plugins/types\";\nimport { DynamoDBTypes, TableConstructor } from \"dynamodb-toolbox/dist/classes/Table\";\nimport {\n EntityAttributeConfig,\n EntityCompositeAttributes\n} from \"dynamodb-toolbox/dist/classes/Entity\";\n\nexport type AttributeDefinition = DynamoDBTypes | EntityAttributeConfig | EntityCompositeAttributes;\n\nexport type Attributes = Record<string, AttributeDefinition>;\n\nexport enum ENTITIES {\n SYSTEM = \"PbSystem\",\n SETTINGS = \"PbSettings\",\n CATEGORIES = \"PbCategories\",\n MENUS = \"PbMenus\",\n PAGE_ELEMENTS = \"PbPageElements\",\n PAGES = \"PbPages\",\n PAGES_ES = \"PbPagesEs\",\n BLOCK_CATEGORIES = \"PbBlockCategories\",\n PAGE_BLOCKS = \"PbPageBlocks\",\n PAGE_TEMPLATES = \"PbPageTemplates\"\n}\n\nexport interface TableModifier {\n (table: TableConstructor): TableConstructor;\n}\n\nexport interface PageBuilderStorageOperations extends BasePageBuilderStorageOperations {\n getTable: () => Table;\n getEsTable: () => Table;\n getEntities: () => Record<\n | \"system\"\n | \"settings\"\n | \"categories\"\n | \"menus\"\n | \"pageElements\"\n | \"pages\"\n | \"pagesEs\"\n | \"blockCategories\"\n | \"pageBlocks\"\n | \"pageTemplates\",\n Entity<any>\n >;\n}\n\nexport interface StorageOperationsFactoryParams {\n documentClient: DocumentClient;\n elasticsearch: Client;\n table?: TableModifier;\n esTable?: TableModifier;\n attributes?: Record<ENTITIES, Attributes>;\n plugins?: PluginCollection;\n}\n\nexport interface StorageOperationsFactory {\n (params: StorageOperationsFactoryParams): PageBuilderStorageOperations;\n}\n\nexport interface DataContainer<T> {\n PK: string;\n SK: string;\n TYPE: string;\n data: T;\n}\n\nexport interface DataLoaderInterface {\n clear: () => void;\n}\n\nexport interface PageTemplateStorageOperations extends BasePageTemplateStorageOperations {\n dataLoader: DataLoaderInterface;\n}\n\nexport interface BlockCategoryStorageOperations extends BaseBlockCategoryStorageOperations {\n dataLoader: DataLoaderInterface;\n}\n\nexport interface CategoryStorageOperations extends BaseCategoryStorageOperations {\n dataLoader: DataLoaderInterface;\n}\n\nexport interface PageBlockStorageOperations extends BasePageBlockStorageOperations {\n dataLoader: DataLoaderInterface;\n}\n"],"mappings":";;;;;;IAqBYA,QAAQ;AAAA;AAAA,WAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;AAAA,GAARA,QAAQ,wBAARA,QAAQ"}
@@ -1,2 +0,0 @@
1
- declare const _default: () => import("@webiny/api-upgrade").UpgradePlugin<import("@webiny/api-page-builder/types").PbContext>[];
2
- export default _default;
package/upgrades/index.js DELETED
@@ -1,14 +0,0 @@
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.default = void 0;
9
-
10
- var _v = _interopRequireDefault(require("./v5.15.0"));
11
-
12
- var _default = () => [(0, _v.default)()];
13
-
14
- exports.default = _default;
@@ -1 +0,0 @@
1
- {"version":3,"names":["upgrade5150"],"sources":["index.ts"],"sourcesContent":["import upgrade5150 from \"~/upgrades/v5.15.0\";\n\nexport default () => [upgrade5150()];\n"],"mappings":";;;;;;;;;AAAA;;eAEe,MAAM,CAAC,IAAAA,UAAA,GAAD,C"}
@@ -1,2 +0,0 @@
1
- import { PbContext } from "@webiny/api-page-builder/graphql/types";
2
- export declare const upgradeCategories: (context: PbContext) => Promise<void>;
@@ -1,73 +0,0 @@
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.upgradeCategories = void 0;
9
-
10
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
-
12
- var _CategoryStorageOperations = require("../../operations/category/CategoryStorageOperations");
13
-
14
- var _query = require("@webiny/db-dynamodb/utils/query");
15
-
16
- var _batchWrite = require("@webiny/db-dynamodb/utils/batchWrite");
17
-
18
- var _error = _interopRequireDefault(require("@webiny/error"));
19
-
20
- // @ts-ignore
21
- const upgradeCategories = async context => {
22
- const tenant = context.tenancy.getCurrentTenant().id;
23
- const localeCodes = await context.i18n.getLocales().map(locale => locale.code); // @ts-ignore
24
-
25
- const categoryStorageOperations = context.pageBuilder.categories.storageOperations;
26
-
27
- if (categoryStorageOperations instanceof _CategoryStorageOperations.CategoryStorageOperationsDdbEs === false) {
28
- throw new _error.default("context.pageBuilder.categories.storageOperations must be instance of CategoryStorageOperationsDdbEs.");
29
- }
30
- /**
31
- * First we need all categories in all existing locales of the tenant.
32
- */
33
-
34
-
35
- const records = [];
36
-
37
- for (const locale of localeCodes) {
38
- const partitionKey = categoryStorageOperations.createPartitionKey({
39
- tenant,
40
- locale
41
- });
42
- const result = await (0, _query.queryAll)({
43
- entity: categoryStorageOperations.entity,
44
- partitionKey,
45
- options: {
46
- gt: " "
47
- }
48
- });
49
- /**
50
- * Need to update existing categories with tenant and locale information.
51
- */
52
-
53
- records.push(...result.map(item => {
54
- return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, item), {}, {
55
- PK: partitionKey,
56
- SK: categoryStorageOperations.createSortKey(item),
57
- TYPE: categoryStorageOperations.createType(),
58
- tenant,
59
- locale
60
- });
61
- }));
62
- }
63
-
64
- const items = records.map(record => {
65
- return categoryStorageOperations.entity.putBatch(record);
66
- });
67
- await (0, _batchWrite.batchWriteAll)({
68
- table: categoryStorageOperations.table,
69
- items
70
- });
71
- };
72
-
73
- exports.upgradeCategories = upgradeCategories;
@@ -1 +0,0 @@
1
- {"version":3,"names":["upgradeCategories","context","tenant","tenancy","getCurrentTenant","id","localeCodes","i18n","getLocales","map","locale","code","categoryStorageOperations","pageBuilder","categories","storageOperations","CategoryStorageOperationsDdbEs","WebinyError","records","partitionKey","createPartitionKey","result","queryAll","entity","options","gt","push","item","PK","SK","createSortKey","TYPE","createType","items","record","putBatch","batchWriteAll","table"],"sources":["category.ts"],"sourcesContent":["import { PbContext } from \"@webiny/api-page-builder/graphql/types\";\n// @ts-ignore\nimport { CategoryStorageOperationsDdbEs } from \"~/operations/category/CategoryStorageOperations\";\nimport { Category } from \"@webiny/api-page-builder/types\";\nimport { queryAll } from \"@webiny/db-dynamodb/utils/query\";\nimport { batchWriteAll } from \"@webiny/db-dynamodb/utils/batchWrite\";\nimport WebinyError from \"@webiny/error\";\n\ntype DbRecord<T> = T & {\n PK: string;\n SK: string;\n TYPE: string;\n};\n\nexport const upgradeCategories = async (context: PbContext) => {\n const tenant: string = context.tenancy.getCurrentTenant().id;\n const localeCodes: string[] = await context.i18n.getLocales().map(locale => locale.code);\n // @ts-ignore\n const categoryStorageOperations = context.pageBuilder.categories\n .storageOperations as CategoryStorageOperationsDdbEs;\n if (categoryStorageOperations instanceof CategoryStorageOperationsDdbEs === false) {\n throw new WebinyError(\n \"context.pageBuilder.categories.storageOperations must be instance of CategoryStorageOperationsDdbEs.\"\n );\n }\n /**\n * First we need all categories in all existing locales of the tenant.\n */\n const records: DbRecord<Category>[] = [];\n for (const locale of localeCodes) {\n const partitionKey = categoryStorageOperations.createPartitionKey({\n tenant,\n locale\n });\n const result = await queryAll<Category>({\n entity: categoryStorageOperations.entity,\n partitionKey,\n options: {\n gt: \" \"\n }\n });\n /**\n * Need to update existing categories with tenant and locale information.\n */\n records.push(\n ...result.map(item => {\n return {\n ...item,\n PK: partitionKey,\n SK: categoryStorageOperations.createSortKey(item),\n TYPE: categoryStorageOperations.createType(),\n tenant,\n locale\n };\n })\n );\n }\n const items = records.map(record => {\n return categoryStorageOperations.entity.putBatch(record);\n });\n\n await batchWriteAll({\n table: categoryStorageOperations.table,\n items\n });\n};\n"],"mappings":";;;;;;;;;;;AAEA;;AAEA;;AACA;;AACA;;AALA;AAaO,MAAMA,iBAAiB,GAAG,MAAOC,OAAP,IAA8B;EAC3D,MAAMC,MAAc,GAAGD,OAAO,CAACE,OAAR,CAAgBC,gBAAhB,GAAmCC,EAA1D;EACA,MAAMC,WAAqB,GAAG,MAAML,OAAO,CAACM,IAAR,CAAaC,UAAb,GAA0BC,GAA1B,CAA8BC,MAAM,IAAIA,MAAM,CAACC,IAA/C,CAApC,CAF2D,CAG3D;;EACA,MAAMC,yBAAyB,GAAGX,OAAO,CAACY,WAAR,CAAoBC,UAApB,CAC7BC,iBADL;;EAEA,IAAIH,yBAAyB,YAAYI,yDAArC,KAAwE,KAA5E,EAAmF;IAC/E,MAAM,IAAIC,cAAJ,CACF,sGADE,CAAN;EAGH;EACD;AACJ;AACA;;;EACI,MAAMC,OAA6B,GAAG,EAAtC;;EACA,KAAK,MAAMR,MAAX,IAAqBJ,WAArB,EAAkC;IAC9B,MAAMa,YAAY,GAAGP,yBAAyB,CAACQ,kBAA1B,CAA6C;MAC9DlB,MAD8D;MAE9DQ;IAF8D,CAA7C,CAArB;IAIA,MAAMW,MAAM,GAAG,MAAM,IAAAC,eAAA,EAAmB;MACpCC,MAAM,EAAEX,yBAAyB,CAACW,MADE;MAEpCJ,YAFoC;MAGpCK,OAAO,EAAE;QACLC,EAAE,EAAE;MADC;IAH2B,CAAnB,CAArB;IAOA;AACR;AACA;;IACQP,OAAO,CAACQ,IAAR,CACI,GAAGL,MAAM,CAACZ,GAAP,CAAWkB,IAAI,IAAI;MAClB,mEACOA,IADP;QAEIC,EAAE,EAAET,YAFR;QAGIU,EAAE,EAAEjB,yBAAyB,CAACkB,aAA1B,CAAwCH,IAAxC,CAHR;QAIII,IAAI,EAAEnB,yBAAyB,CAACoB,UAA1B,EAJV;QAKI9B,MALJ;QAMIQ;MANJ;IAQH,CATE,CADP;EAYH;;EACD,MAAMuB,KAAK,GAAGf,OAAO,CAACT,GAAR,CAAYyB,MAAM,IAAI;IAChC,OAAOtB,yBAAyB,CAACW,MAA1B,CAAiCY,QAAjC,CAA0CD,MAA1C,CAAP;EACH,CAFa,CAAd;EAIA,MAAM,IAAAE,yBAAA,EAAc;IAChBC,KAAK,EAAEzB,yBAAyB,CAACyB,KADjB;IAEhBJ;EAFgB,CAAd,CAAN;AAIH,CAnDM"}
@@ -1,4 +0,0 @@
1
- import { UpgradePlugin } from "@webiny/api-upgrade/types";
2
- import { PbContext } from "@webiny/api-page-builder/graphql/types";
3
- declare const _default: () => UpgradePlugin<PbContext>;
4
- export default _default;
@@ -1,52 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _category = require("./category");
9
-
10
- var _menu = require("./menu");
11
-
12
- var _pageElement = require("./pageElement");
13
-
14
- var _default = () => {
15
- return {
16
- type: "api-upgrade",
17
- app: "page-builder",
18
- version: "5.15.0",
19
- apply: async context => {
20
- /**
21
- * Upgrade categories.
22
- */
23
- try {
24
- await (0, _category.upgradeCategories)(context);
25
- } catch (ex) {
26
- console.log(ex.message);
27
- }
28
- /**
29
- * Upgrade menus.
30
- */
31
-
32
-
33
- try {
34
- await (0, _menu.upgradeMenus)(context);
35
- } catch (ex) {
36
- console.log(ex.message);
37
- }
38
- /**
39
- * Upgrade page elements.
40
- */
41
-
42
-
43
- try {
44
- await (0, _pageElement.upgradePageElements)(context);
45
- } catch (ex) {
46
- console.log(ex.message);
47
- }
48
- }
49
- };
50
- };
51
-
52
- exports.default = _default;
@@ -1 +0,0 @@
1
- {"version":3,"names":["type","app","version","apply","context","upgradeCategories","ex","console","log","message","upgradeMenus","upgradePageElements"],"sources":["index.ts"],"sourcesContent":["import { UpgradePlugin } from \"@webiny/api-upgrade/types\";\nimport { PbContext } from \"@webiny/api-page-builder/graphql/types\";\nimport { upgradeCategories } from \"~/upgrades/v5.15.0/category\";\nimport { upgradeMenus } from \"~/upgrades/v5.15.0/menu\";\nimport { upgradePageElements } from \"~/upgrades/v5.15.0/pageElement\";\n\nexport default (): UpgradePlugin<PbContext> => {\n return {\n type: \"api-upgrade\",\n app: \"page-builder\",\n version: \"5.15.0\",\n apply: async context => {\n /**\n * Upgrade categories.\n */\n try {\n await upgradeCategories(context);\n } catch (ex) {\n console.log(ex.message);\n }\n /**\n * Upgrade menus.\n */\n try {\n await upgradeMenus(context);\n } catch (ex) {\n console.log(ex.message);\n }\n /**\n * Upgrade page elements.\n */\n try {\n await upgradePageElements(context);\n } catch (ex) {\n console.log(ex.message);\n }\n }\n };\n};\n"],"mappings":";;;;;;;AAEA;;AACA;;AACA;;eAEe,MAAgC;EAC3C,OAAO;IACHA,IAAI,EAAE,aADH;IAEHC,GAAG,EAAE,cAFF;IAGHC,OAAO,EAAE,QAHN;IAIHC,KAAK,EAAE,MAAMC,OAAN,IAAiB;MACpB;AACZ;AACA;MACY,IAAI;QACA,MAAM,IAAAC,2BAAA,EAAkBD,OAAlB,CAAN;MACH,CAFD,CAEE,OAAOE,EAAP,EAAW;QACTC,OAAO,CAACC,GAAR,CAAYF,EAAE,CAACG,OAAf;MACH;MACD;AACZ;AACA;;;MACY,IAAI;QACA,MAAM,IAAAC,kBAAA,EAAaN,OAAb,CAAN;MACH,CAFD,CAEE,OAAOE,EAAP,EAAW;QACTC,OAAO,CAACC,GAAR,CAAYF,EAAE,CAACG,OAAf;MACH;MACD;AACZ;AACA;;;MACY,IAAI;QACA,MAAM,IAAAE,gCAAA,EAAoBP,OAApB,CAAN;MACH,CAFD,CAEE,OAAOE,EAAP,EAAW;QACTC,OAAO,CAACC,GAAR,CAAYF,EAAE,CAACG,OAAf;MACH;IACJ;EA7BE,CAAP;AA+BH,C"}
@@ -1,2 +0,0 @@
1
- import { PbContext } from "@webiny/api-page-builder/graphql/types";
2
- export declare const upgradeMenus: (context: PbContext) => Promise<void>;
@@ -1,73 +0,0 @@
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.upgradeMenus = void 0;
9
-
10
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
-
12
- var _MenuStorageOperations = require("../../operations/menu/MenuStorageOperations");
13
-
14
- var _query = require("@webiny/db-dynamodb/utils/query");
15
-
16
- var _batchWrite = require("@webiny/db-dynamodb/utils/batchWrite");
17
-
18
- var _error = _interopRequireDefault(require("@webiny/error"));
19
-
20
- // @ts-ignore
21
- const upgradeMenus = async context => {
22
- const tenant = context.tenancy.getCurrentTenant().id;
23
- const localeCodes = await context.i18n.getLocales().map(locale => locale.code); // @ts-ignore
24
-
25
- const menuStorageOperations = context.pageBuilder.menus.storageOperations;
26
-
27
- if (menuStorageOperations instanceof _MenuStorageOperations.MenuStorageOperationsDdbEs === false) {
28
- throw new _error.default("context.pageBuilder.menus.storageOperations must be instance of MenuStorageOperationsDdbEs.");
29
- }
30
- /**
31
- * First we need all categories in all existing locales of the tenant.
32
- */
33
-
34
-
35
- const records = [];
36
-
37
- for (const locale of localeCodes) {
38
- const partitionKey = menuStorageOperations.createPartitionKey({
39
- tenant,
40
- locale
41
- });
42
- const result = await (0, _query.queryAll)({
43
- entity: menuStorageOperations.entity,
44
- partitionKey,
45
- options: {
46
- gt: " "
47
- }
48
- });
49
- /**
50
- * Need to update existing menus with tenant and locale information.
51
- */
52
-
53
- records.push(...result.map(item => {
54
- return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, item), {}, {
55
- PK: partitionKey,
56
- SK: menuStorageOperations.createSortKey(item),
57
- TYPE: menuStorageOperations.createType(),
58
- tenant,
59
- locale
60
- });
61
- }));
62
- }
63
-
64
- const items = records.map(record => {
65
- return menuStorageOperations.entity.putBatch(record);
66
- });
67
- await (0, _batchWrite.batchWriteAll)({
68
- table: menuStorageOperations.table,
69
- items
70
- });
71
- };
72
-
73
- exports.upgradeMenus = upgradeMenus;
@@ -1 +0,0 @@
1
- {"version":3,"names":["upgradeMenus","context","tenant","tenancy","getCurrentTenant","id","localeCodes","i18n","getLocales","map","locale","code","menuStorageOperations","pageBuilder","menus","storageOperations","MenuStorageOperationsDdbEs","WebinyError","records","partitionKey","createPartitionKey","result","queryAll","entity","options","gt","push","item","PK","SK","createSortKey","TYPE","createType","items","record","putBatch","batchWriteAll","table"],"sources":["menu.ts"],"sourcesContent":["import { PbContext } from \"@webiny/api-page-builder/graphql/types\";\n// @ts-ignore\nimport { MenuStorageOperationsDdbEs } from \"~/operations/menu/MenuStorageOperations\";\nimport { Menu } from \"@webiny/api-page-builder/types\";\nimport { queryAll } from \"@webiny/db-dynamodb/utils/query\";\nimport { batchWriteAll } from \"@webiny/db-dynamodb/utils/batchWrite\";\nimport WebinyError from \"@webiny/error\";\n\ntype DbRecord<T> = T & {\n PK: string;\n SK: string;\n TYPE: string;\n};\n\nexport const upgradeMenus = async (context: PbContext) => {\n const tenant: string = context.tenancy.getCurrentTenant().id;\n const localeCodes: string[] = await context.i18n.getLocales().map(locale => locale.code);\n // @ts-ignore\n const menuStorageOperations = context.pageBuilder.menus\n .storageOperations as MenuStorageOperationsDdbEs;\n if (menuStorageOperations instanceof MenuStorageOperationsDdbEs === false) {\n throw new WebinyError(\n \"context.pageBuilder.menus.storageOperations must be instance of MenuStorageOperationsDdbEs.\"\n );\n }\n /**\n * First we need all categories in all existing locales of the tenant.\n */\n const records: DbRecord<Menu>[] = [];\n for (const locale of localeCodes) {\n const partitionKey = menuStorageOperations.createPartitionKey({\n tenant,\n locale\n });\n const result = await queryAll<Menu>({\n entity: menuStorageOperations.entity,\n partitionKey,\n options: {\n gt: \" \"\n }\n });\n /**\n * Need to update existing menus with tenant and locale information.\n */\n records.push(\n ...result.map(item => {\n return {\n ...item,\n PK: partitionKey,\n SK: menuStorageOperations.createSortKey(item),\n TYPE: menuStorageOperations.createType(),\n tenant,\n locale\n };\n })\n );\n }\n const items = records.map(record => {\n return menuStorageOperations.entity.putBatch(record);\n });\n\n await batchWriteAll({\n table: menuStorageOperations.table,\n items\n });\n};\n"],"mappings":";;;;;;;;;;;AAEA;;AAEA;;AACA;;AACA;;AALA;AAaO,MAAMA,YAAY,GAAG,MAAOC,OAAP,IAA8B;EACtD,MAAMC,MAAc,GAAGD,OAAO,CAACE,OAAR,CAAgBC,gBAAhB,GAAmCC,EAA1D;EACA,MAAMC,WAAqB,GAAG,MAAML,OAAO,CAACM,IAAR,CAAaC,UAAb,GAA0BC,GAA1B,CAA8BC,MAAM,IAAIA,MAAM,CAACC,IAA/C,CAApC,CAFsD,CAGtD;;EACA,MAAMC,qBAAqB,GAAGX,OAAO,CAACY,WAAR,CAAoBC,KAApB,CACzBC,iBADL;;EAEA,IAAIH,qBAAqB,YAAYI,iDAAjC,KAAgE,KAApE,EAA2E;IACvE,MAAM,IAAIC,cAAJ,CACF,6FADE,CAAN;EAGH;EACD;AACJ;AACA;;;EACI,MAAMC,OAAyB,GAAG,EAAlC;;EACA,KAAK,MAAMR,MAAX,IAAqBJ,WAArB,EAAkC;IAC9B,MAAMa,YAAY,GAAGP,qBAAqB,CAACQ,kBAAtB,CAAyC;MAC1DlB,MAD0D;MAE1DQ;IAF0D,CAAzC,CAArB;IAIA,MAAMW,MAAM,GAAG,MAAM,IAAAC,eAAA,EAAe;MAChCC,MAAM,EAAEX,qBAAqB,CAACW,MADE;MAEhCJ,YAFgC;MAGhCK,OAAO,EAAE;QACLC,EAAE,EAAE;MADC;IAHuB,CAAf,CAArB;IAOA;AACR;AACA;;IACQP,OAAO,CAACQ,IAAR,CACI,GAAGL,MAAM,CAACZ,GAAP,CAAWkB,IAAI,IAAI;MAClB,mEACOA,IADP;QAEIC,EAAE,EAAET,YAFR;QAGIU,EAAE,EAAEjB,qBAAqB,CAACkB,aAAtB,CAAoCH,IAApC,CAHR;QAIII,IAAI,EAAEnB,qBAAqB,CAACoB,UAAtB,EAJV;QAKI9B,MALJ;QAMIQ;MANJ;IAQH,CATE,CADP;EAYH;;EACD,MAAMuB,KAAK,GAAGf,OAAO,CAACT,GAAR,CAAYyB,MAAM,IAAI;IAChC,OAAOtB,qBAAqB,CAACW,MAAtB,CAA6BY,QAA7B,CAAsCD,MAAtC,CAAP;EACH,CAFa,CAAd;EAIA,MAAM,IAAAE,yBAAA,EAAc;IAChBC,KAAK,EAAEzB,qBAAqB,CAACyB,KADb;IAEhBJ;EAFgB,CAAd,CAAN;AAIH,CAnDM"}
@@ -1,2 +0,0 @@
1
- import { PbContext } from "@webiny/api-page-builder/graphql/types";
2
- export declare const upgradePageElements: (context: PbContext) => Promise<void>;
@@ -1,73 +0,0 @@
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.upgradePageElements = void 0;
9
-
10
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
-
12
- var _PageElementStorageOperations = require("../../operations/pageElement/PageElementStorageOperations");
13
-
14
- var _query = require("@webiny/db-dynamodb/utils/query");
15
-
16
- var _batchWrite = require("@webiny/db-dynamodb/utils/batchWrite");
17
-
18
- var _error = _interopRequireDefault(require("@webiny/error"));
19
-
20
- // @ts-ignore
21
- const upgradePageElements = async context => {
22
- const tenant = context.tenancy.getCurrentTenant().id;
23
- const localeCodes = await context.i18n.getLocales().map(locale => locale.code); // @ts-ignore
24
-
25
- const pageElementsStorageOperations = context.pageBuilder.pageElements.storageOperations;
26
-
27
- if (pageElementsStorageOperations instanceof _PageElementStorageOperations.PageElementStorageOperationsDdbEs === false) {
28
- throw new _error.default("context.pageBuilder.pageElements.storageOperations must be instance of PageElementStorageOperationsDdbEs.");
29
- }
30
- /**
31
- * First we need all categories in all existing locales of the tenant.
32
- */
33
-
34
-
35
- const records = [];
36
-
37
- for (const locale of localeCodes) {
38
- const partitionKey = pageElementsStorageOperations.createPartitionKey({
39
- tenant,
40
- locale
41
- });
42
- const result = await (0, _query.queryAll)({
43
- entity: pageElementsStorageOperations.entity,
44
- partitionKey,
45
- options: {
46
- gt: " "
47
- }
48
- });
49
- /**
50
- * Need to update existing menus with tenant and locale information.
51
- */
52
-
53
- records.push(...result.map(item => {
54
- return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, item), {}, {
55
- PK: partitionKey,
56
- SK: pageElementsStorageOperations.createSortKey(item),
57
- TYPE: pageElementsStorageOperations.createType(),
58
- tenant,
59
- locale
60
- });
61
- }));
62
- }
63
-
64
- const items = records.map(record => {
65
- return pageElementsStorageOperations.entity.putBatch(record);
66
- });
67
- await (0, _batchWrite.batchWriteAll)({
68
- table: pageElementsStorageOperations.table,
69
- items
70
- });
71
- };
72
-
73
- exports.upgradePageElements = upgradePageElements;
@@ -1 +0,0 @@
1
- {"version":3,"names":["upgradePageElements","context","tenant","tenancy","getCurrentTenant","id","localeCodes","i18n","getLocales","map","locale","code","pageElementsStorageOperations","pageBuilder","pageElements","storageOperations","PageElementStorageOperationsDdbEs","WebinyError","records","partitionKey","createPartitionKey","result","queryAll","entity","options","gt","push","item","PK","SK","createSortKey","TYPE","createType","items","record","putBatch","batchWriteAll","table"],"sources":["pageElement.ts"],"sourcesContent":["import { PbContext } from \"@webiny/api-page-builder/graphql/types\";\n// @ts-ignore\nimport { PageElementStorageOperationsDdbEs } from \"~/operations/pageElement/PageElementStorageOperations\";\nimport { PageElement } from \"@webiny/api-page-builder/types\";\nimport { queryAll } from \"@webiny/db-dynamodb/utils/query\";\nimport { batchWriteAll } from \"@webiny/db-dynamodb/utils/batchWrite\";\nimport WebinyError from \"@webiny/error\";\n\ntype DbRecord<T> = T & {\n PK: string;\n SK: string;\n TYPE: string;\n};\n\nexport const upgradePageElements = async (context: PbContext) => {\n const tenant: string = context.tenancy.getCurrentTenant().id;\n const localeCodes: string[] = await context.i18n.getLocales().map(locale => locale.code);\n // @ts-ignore\n const pageElementsStorageOperations = context.pageBuilder.pageElements\n .storageOperations as PageElementStorageOperationsDdbEs;\n if (pageElementsStorageOperations instanceof PageElementStorageOperationsDdbEs === false) {\n throw new WebinyError(\n \"context.pageBuilder.pageElements.storageOperations must be instance of PageElementStorageOperationsDdbEs.\"\n );\n }\n /**\n * First we need all categories in all existing locales of the tenant.\n */\n const records: DbRecord<PageElement>[] = [];\n for (const locale of localeCodes) {\n const partitionKey = pageElementsStorageOperations.createPartitionKey({\n tenant,\n locale\n });\n const result = await queryAll<PageElement>({\n entity: pageElementsStorageOperations.entity,\n partitionKey,\n options: {\n gt: \" \"\n }\n });\n /**\n * Need to update existing menus with tenant and locale information.\n */\n records.push(\n ...result.map(item => {\n return {\n ...item,\n PK: partitionKey,\n SK: pageElementsStorageOperations.createSortKey(item),\n TYPE: pageElementsStorageOperations.createType(),\n tenant,\n locale\n };\n })\n );\n }\n const items = records.map(record => {\n return pageElementsStorageOperations.entity.putBatch(record);\n });\n\n await batchWriteAll({\n table: pageElementsStorageOperations.table,\n items\n });\n};\n"],"mappings":";;;;;;;;;;;AAEA;;AAEA;;AACA;;AACA;;AALA;AAaO,MAAMA,mBAAmB,GAAG,MAAOC,OAAP,IAA8B;EAC7D,MAAMC,MAAc,GAAGD,OAAO,CAACE,OAAR,CAAgBC,gBAAhB,GAAmCC,EAA1D;EACA,MAAMC,WAAqB,GAAG,MAAML,OAAO,CAACM,IAAR,CAAaC,UAAb,GAA0BC,GAA1B,CAA8BC,MAAM,IAAIA,MAAM,CAACC,IAA/C,CAApC,CAF6D,CAG7D;;EACA,MAAMC,6BAA6B,GAAGX,OAAO,CAACY,WAAR,CAAoBC,YAApB,CACjCC,iBADL;;EAEA,IAAIH,6BAA6B,YAAYI,+DAAzC,KAA+E,KAAnF,EAA0F;IACtF,MAAM,IAAIC,cAAJ,CACF,2GADE,CAAN;EAGH;EACD;AACJ;AACA;;;EACI,MAAMC,OAAgC,GAAG,EAAzC;;EACA,KAAK,MAAMR,MAAX,IAAqBJ,WAArB,EAAkC;IAC9B,MAAMa,YAAY,GAAGP,6BAA6B,CAACQ,kBAA9B,CAAiD;MAClElB,MADkE;MAElEQ;IAFkE,CAAjD,CAArB;IAIA,MAAMW,MAAM,GAAG,MAAM,IAAAC,eAAA,EAAsB;MACvCC,MAAM,EAAEX,6BAA6B,CAACW,MADC;MAEvCJ,YAFuC;MAGvCK,OAAO,EAAE;QACLC,EAAE,EAAE;MADC;IAH8B,CAAtB,CAArB;IAOA;AACR;AACA;;IACQP,OAAO,CAACQ,IAAR,CACI,GAAGL,MAAM,CAACZ,GAAP,CAAWkB,IAAI,IAAI;MAClB,mEACOA,IADP;QAEIC,EAAE,EAAET,YAFR;QAGIU,EAAE,EAAEjB,6BAA6B,CAACkB,aAA9B,CAA4CH,IAA5C,CAHR;QAIII,IAAI,EAAEnB,6BAA6B,CAACoB,UAA9B,EAJV;QAKI9B,MALJ;QAMIQ;MANJ;IAQH,CATE,CADP;EAYH;;EACD,MAAMuB,KAAK,GAAGf,OAAO,CAACT,GAAR,CAAYyB,MAAM,IAAI;IAChC,OAAOtB,6BAA6B,CAACW,MAA9B,CAAqCY,QAArC,CAA8CD,MAA9C,CAAP;EACH,CAFa,CAAd;EAIA,MAAM,IAAAE,yBAAA,EAAc;IAChBC,KAAK,EAAEzB,6BAA6B,CAACyB,KADrB;IAEhBJ;EAFgB,CAAd,CAAN;AAIH,CAnDM"}