@webiny/api-headless-cms-ddb 5.15.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +25 -0
  3. package/configurations.d.ts +18 -0
  4. package/configurations.js +24 -0
  5. package/configurations.js.map +1 -0
  6. package/definitions/entry.d.ts +6 -0
  7. package/definitions/entry.js +86 -0
  8. package/definitions/entry.js.map +1 -0
  9. package/definitions/table.d.ts +14 -0
  10. package/definitions/table.js +30 -0
  11. package/definitions/table.js.map +1 -0
  12. package/dynamoDb/index.d.ts +2 -0
  13. package/dynamoDb/index.js +23 -0
  14. package/dynamoDb/index.js.map +1 -0
  15. package/dynamoDb/path/plainObject.d.ts +3 -0
  16. package/dynamoDb/path/plainObject.js +34 -0
  17. package/dynamoDb/path/plainObject.js.map +1 -0
  18. package/dynamoDb/path/ref.d.ts +3 -0
  19. package/dynamoDb/path/ref.js +28 -0
  20. package/dynamoDb/path/ref.js.map +1 -0
  21. package/dynamoDb/storage/date.d.ts +3 -0
  22. package/dynamoDb/storage/date.js +69 -0
  23. package/dynamoDb/storage/date.js.map +1 -0
  24. package/dynamoDb/storage/richText.d.ts +8 -0
  25. package/dynamoDb/storage/richText.js +108 -0
  26. package/dynamoDb/storage/richText.js.map +1 -0
  27. package/dynamoDb/transformValue/datetime.d.ts +3 -0
  28. package/dynamoDb/transformValue/datetime.js +48 -0
  29. package/dynamoDb/transformValue/datetime.js.map +1 -0
  30. package/index.d.ts +6 -0
  31. package/index.js +30 -0
  32. package/index.js.map +1 -0
  33. package/operations/entry/CmsContentEntryDynamo.d.ts +86 -0
  34. package/operations/entry/CmsContentEntryDynamo.js +972 -0
  35. package/operations/entry/CmsContentEntryDynamo.js.map +1 -0
  36. package/operations/entry/dataLoaders.d.ts +23 -0
  37. package/operations/entry/dataLoaders.js +283 -0
  38. package/operations/entry/dataLoaders.js.map +1 -0
  39. package/operations/entry/index.d.ts +4 -0
  40. package/operations/entry/index.js +25 -0
  41. package/operations/entry/index.js.map +1 -0
  42. package/operations/entry/systemFields.d.ts +2 -0
  43. package/operations/entry/systemFields.js +51 -0
  44. package/operations/entry/systemFields.js.map +1 -0
  45. package/operations/entry/utils.d.ts +26 -0
  46. package/operations/entry/utils.js +362 -0
  47. package/operations/entry/utils.js.map +1 -0
  48. package/operations/helpers.d.ts +5 -0
  49. package/operations/helpers.js +96 -0
  50. package/operations/helpers.js.map +1 -0
  51. package/operations/model/CmsContentModelDynamo.d.ts +18 -0
  52. package/operations/model/CmsContentModelDynamo.js +234 -0
  53. package/operations/model/CmsContentModelDynamo.js.map +1 -0
  54. package/operations/model/index.d.ts +3 -0
  55. package/operations/model/index.js +26 -0
  56. package/operations/model/index.js.map +1 -0
  57. package/operations/modelGroup/CmsContentModelGroupDynamo.d.ts +42 -0
  58. package/operations/modelGroup/CmsContentModelGroupDynamo.js +230 -0
  59. package/operations/modelGroup/CmsContentModelGroupDynamo.js.map +1 -0
  60. package/operations/modelGroup/index.d.ts +3 -0
  61. package/operations/modelGroup/index.js +26 -0
  62. package/operations/modelGroup/index.js.map +1 -0
  63. package/operations/settings/CmsSettingsDynamo.d.ts +16 -0
  64. package/operations/settings/CmsSettingsDynamo.js +145 -0
  65. package/operations/settings/CmsSettingsDynamo.js.map +1 -0
  66. package/operations/settings/index.d.ts +3 -0
  67. package/operations/settings/index.js +25 -0
  68. package/operations/settings/index.js.map +1 -0
  69. package/operations/system/CmsSystemDynamo.d.ts +16 -0
  70. package/operations/system/CmsSystemDynamo.js +126 -0
  71. package/operations/system/CmsSystemDynamo.js.map +1 -0
  72. package/operations/system/index.d.ts +3 -0
  73. package/operations/system/index.js +25 -0
  74. package/operations/system/index.js.map +1 -0
  75. package/package.json +61 -0
  76. package/types.d.ts +54 -0
  77. package/types.js +6 -0
  78. package/types.js.map +1 -0
  79. package/utils.d.ts +5 -0
  80. package/utils.js +62 -0
  81. package/utils.js.map +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/operations/entry/utils.ts"],"names":["VALUES_ATTRIBUTE","extractWhereArgs","key","result","split","fieldId","shift","rawOp","length","join","operation","negate","match","replace","transformValue","value","transform","Array","isArray","map","v","createFilters","args","where","context","fields","filterPlugins","getMappedPlugins","type","ValueFilterPlugin","property","transformValuePlugins","valuePathPlugins","Object","keys","field","WebinyError","transformValuePlugin","def","valuePathPlugin","targetValuePath","basePath","systemFields","createPath","valuePath","filterPlugin","transformValueCallable","path","compareValue","filterItems","items","filters","filter","item","dotProp","get","matched","matches","extractSort","sortBy","order","modelField","reverse","sortEntryItems","sort","push","firstSort","itemsToSort","id","valueTransformer","sortedItems","newItems","s","find","i","sortingBy","plugins","byType","reduce","collection","plugin","buildModelFields","model","values","isSystemField"],"mappings":"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","sourcesContent":["import {\n CmsContentEntry,\n CmsContentEntryListWhere,\n CmsContentModel,\n CmsContentModelField,\n CmsContext\n} from \"@webiny/api-headless-cms/types\";\nimport { Plugin } from \"@webiny/plugins/types\";\nimport WebinyError from \"@webiny/error\";\nimport lodashSortBy from \"lodash.sortby\";\nimport dotProp from \"dot-prop\";\nimport { CmsFieldFilterPathPlugin, CmsFieldFilterValueTransformPlugin } from \"~/types\";\nimport { systemFields } from \"./systemFields\";\nimport { ValueFilterPlugin } from \"@webiny/db-dynamodb/plugins/definitions/ValueFilterPlugin\";\n\ninterface ModelField {\n def: CmsContentModelField;\n valueTransformer: (value: any) => any;\n valuePath: string;\n isSystemField?: boolean;\n}\n\ntype ModelFieldRecords = Record<string, ModelField>;\n\ninterface CreateFiltersArgs {\n context: CmsContext;\n where: CmsContentEntryListWhere;\n fields: ModelFieldRecords;\n}\n\ninterface ItemFilter {\n fieldId: string;\n path: string;\n filterPlugin: ValueFilterPlugin;\n negate: boolean;\n compareValue: any;\n transformValue: <I = any, O = any>(value: I) => O;\n}\n\ninterface FilterItemsArgs {\n items: CmsContentEntry[];\n where: CmsContentEntryListWhere;\n context: CmsContext;\n fields: ModelFieldRecords;\n}\n\nconst VALUES_ATTRIBUTE = \"values\";\n\nconst extractWhereArgs = (key: string) => {\n const result = key.split(\"_\");\n const fieldId = result.shift();\n const rawOp = result.length === 0 ? \"eq\" : result.join(\"_\");\n /**\n * When rawOp is not, it means it is equal negated so just return that.\n */\n if (rawOp === \"not\") {\n return {\n fieldId,\n operation: \"eq\",\n negate: true\n };\n }\n const negate = rawOp.match(\"not_\") !== null;\n const operation = rawOp.replace(\"not_\", \"\");\n return { fieldId, operation, negate };\n};\n\nconst transformValue = (value: any, transform: (value: any) => any): any => {\n if (Array.isArray(value)) {\n return value.map(v => transform(v));\n }\n return transform(value);\n};\n\nconst createFilters = (args: CreateFiltersArgs): ItemFilter[] => {\n const { where, context, fields } = args;\n const filterPlugins = getMappedPlugins<ValueFilterPlugin>({\n context,\n type: ValueFilterPlugin.type,\n property: \"operation\"\n });\n const transformValuePlugins = getMappedPlugins<CmsFieldFilterValueTransformPlugin>({\n context,\n type: \"cms-field-filter-value-transform\",\n property: \"fieldType\"\n });\n const valuePathPlugins = getMappedPlugins<CmsFieldFilterPathPlugin>({\n context,\n type: \"cms-field-filter-path\",\n property: \"fieldType\"\n });\n return Object.keys(where).map(key => {\n const { fieldId, operation, negate } = extractWhereArgs(key);\n\n const field: ModelField = fields[fieldId];\n if (!field) {\n throw new WebinyError(\n `There is no field with the fieldId \"${fieldId}\".`,\n \"FIELD_ERROR\",\n {\n fieldId\n }\n );\n }\n\n const transformValuePlugin: CmsFieldFilterValueTransformPlugin =\n transformValuePlugins[field.def.type];\n const valuePathPlugin = valuePathPlugins[field.def.type];\n let targetValuePath: string;\n /**\n * add the base path if field is not a system field\n * pathPlugin should not know about that\n */\n const basePath = systemFields[fieldId] ? \"\" : `${VALUES_ATTRIBUTE}.`;\n if (valuePathPlugin) {\n targetValuePath = valuePathPlugin.createPath({\n field: field.def\n });\n } else if (systemFields[fieldId]) {\n targetValuePath = fieldId;\n } else {\n targetValuePath = field.def.fieldId;\n }\n\n const valuePath = `${basePath}${targetValuePath}`;\n\n const filterPlugin = filterPlugins[operation];\n if (!filterPlugin) {\n throw new WebinyError(\n `There is no filter plugin for operation \"${operation}\".`,\n \"FILTER_PLUGIN_ERROR\",\n {\n operation\n }\n );\n }\n\n const transformValueCallable = (value: any) => {\n if (!transformValuePlugin) {\n return value;\n }\n return transformValuePlugin.transform({\n field: field.def,\n value\n });\n };\n\n return {\n fieldId,\n path: valuePath,\n filterPlugin,\n negate,\n compareValue: transformValue(where[key], transformValueCallable),\n transformValue: transformValueCallable\n };\n });\n};\n\nexport const filterItems = (args: FilterItemsArgs): CmsContentEntry[] => {\n const { items, where, context, fields } = args;\n\n const filters = createFilters({\n context,\n where,\n fields\n });\n return items.filter(item => {\n for (const filter of filters) {\n const value = transformValue(dotProp.get(item, filter.path), filter.transformValue);\n const matched = filter.filterPlugin.matches({\n value,\n compareValue: filter.compareValue\n });\n if ((filter.negate ? !matched : matched) === false) {\n return false;\n }\n }\n return true;\n });\n};\n\nconst extractSort = (\n sortBy: string,\n fields: ModelFieldRecords\n): { valuePath: string; reverse: boolean; fieldId: string } => {\n const result = sortBy.split(\"_\");\n if (result.length !== 2) {\n throw new WebinyError(\n \"Problem in determining the sorting for the entry items.\",\n \"SORT_ERROR\",\n {\n sortBy\n }\n );\n }\n const [fieldId, order] = result;\n\n const modelField = fields[fieldId];\n\n if (!modelField) {\n throw new WebinyError(\n \"Sorting field does not exist in the content model.\",\n \"SORTING_FIELD_ERROR\",\n {\n fieldId,\n fields\n }\n );\n }\n const valuePath = modelField.valuePath;\n return {\n fieldId,\n valuePath,\n reverse: order === \"DESC\"\n };\n};\n\ninterface SortEntryItemsArgs {\n items: CmsContentEntry[];\n sort: string[];\n fields: ModelFieldRecords;\n}\n\nexport const sortEntryItems = (args: SortEntryItemsArgs): CmsContentEntry[] => {\n const { items, sort = [], fields } = args;\n if (items.length <= 1) {\n return items;\n } else if (sort.length === 0) {\n sort.push(\"savedOn_DESC\");\n } else if (sort.length > 1) {\n throw new WebinyError(\"Sorting is limited to a single field\", \"SORT_ERROR\", {\n sort: sort\n });\n }\n const [firstSort] = sort;\n if (!firstSort) {\n throw new WebinyError(\"Empty sort array item.\", \"SORT_ERROR\", {\n sort\n });\n }\n\n const { fieldId, valuePath, reverse } = extractSort(firstSort, fields);\n const field = fields[fieldId];\n\n const itemsToSort = items.map(item => {\n return {\n id: item.id,\n value: field.valueTransformer(dotProp.get(item, valuePath))\n };\n });\n const sortedItems: { id: string; value: any }[] = lodashSortBy(itemsToSort, \"value\");\n const newItems = sortedItems.map(s => {\n const item = items.find(i => i.id === s.id);\n if (item) {\n return item;\n }\n throw new WebinyError(\n \"Could not find item by given id after the sorting.\",\n \"SORTING_ITEMS_ERROR\",\n {\n id: s.id,\n sortingBy: fieldId,\n reverse\n }\n );\n });\n if (!reverse) {\n return newItems;\n }\n return newItems.reverse();\n};\n\nconst getMappedPlugins = <T extends Plugin>(args: {\n context: CmsContext;\n type: string;\n property: string;\n}): Record<string, T> => {\n const { context, type, property } = args;\n const plugins = context.plugins.byType<T>(type);\n if (plugins.length === 0) {\n throw new WebinyError(`There are no plugins of type \"${type}\".`, \"PLUGINS_ERROR\", {\n type\n });\n }\n return plugins.reduce((collection, plugin) => {\n const key = plugin[property];\n if (typeof key !== \"string\") {\n throw new WebinyError(\n \"Property to map the plugins on must be a string.\",\n \"PLUGIN_PROPERTY_ERROR\",\n {\n type,\n property\n }\n );\n }\n collection[key] = plugin;\n return collection;\n }, {});\n};\n\nexport const buildModelFields = ({\n context,\n model\n}: {\n context: CmsContext;\n model: CmsContentModel;\n}) => {\n const transformValuePlugins = getMappedPlugins<CmsFieldFilterValueTransformPlugin>({\n context,\n type: \"cms-field-filter-value-transform\",\n property: \"fieldType\"\n });\n const valuePathPlugins = getMappedPlugins<CmsFieldFilterPathPlugin>({\n context,\n type: \"cms-field-filter-path\",\n property: \"fieldType\"\n });\n const fields: ModelFieldRecords = Object.values(systemFields).reduce((collection, field) => {\n const transformValuePlugin = transformValuePlugins[field.type];\n const valuePathPlugin = valuePathPlugins[field.type];\n let valuePath: string;\n if (valuePathPlugin) {\n valuePath = valuePathPlugin.createPath({\n field\n });\n }\n collection[field.fieldId] = {\n def: field,\n valueTransformer: (value: any) => {\n if (!transformValuePlugin) {\n return value;\n }\n return transformValuePlugin.transform({ field, value });\n },\n valuePath: valuePath || field.fieldId,\n isSystemField: true\n };\n\n return collection;\n }, {} as ModelFieldRecords);\n\n return model.fields.reduce((collection, field) => {\n const transformValuePlugin = transformValuePlugins[field.type];\n const valuePathPlugin = valuePathPlugins[field.type];\n let valuePath: string;\n if (valuePathPlugin) {\n valuePath = valuePathPlugin.createPath({\n field\n });\n }\n const targetValuePath = `${VALUES_ATTRIBUTE}.${valuePath || field.fieldId}`;\n collection[field.fieldId] = {\n def: field,\n valueTransformer: (value: any) => {\n if (!transformValuePlugin) {\n return value;\n }\n return transformValuePlugin.transform({ field, value });\n },\n valuePath: targetValuePath || field.fieldId\n };\n\n return collection;\n }, fields);\n};\n"],"file":"utils.js"}
@@ -0,0 +1,5 @@
1
+ import { CmsContext } from "@webiny/api-headless-cms/types";
2
+ import { DocumentClient } from "aws-sdk/clients/dynamodb";
3
+ export declare const getDocumentClient: (context: CmsContext) => DocumentClient;
4
+ export declare const getTable: (context: CmsContext) => string;
5
+ export declare const whereFilterFactory: (where?: Record<string, any>) => (model: any) => boolean;
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.whereFilterFactory = exports.getTable = exports.getDocumentClient = void 0;
9
+
10
+ var _error = _interopRequireDefault(require("@webiny/error"));
11
+
12
+ const getDocumentClient = context => {
13
+ const driver = context.db.driver;
14
+
15
+ if (!driver || !driver.documentClient) {
16
+ throw new _error.default(`Missing documentDriver on the context db.driver property.`, "DOCUMENT_CLIENT_ERROR");
17
+ }
18
+
19
+ return driver.documentClient;
20
+ };
21
+
22
+ exports.getDocumentClient = getDocumentClient;
23
+
24
+ const getTable = context => {
25
+ const db = context.db;
26
+
27
+ if (!db) {
28
+ throw new _error.default("Missing db on context.", "DB_ERROR");
29
+ } else if (!db.table) {
30
+ throw new _error.default("Missing table on context.db.", "TABLE_ERROR");
31
+ }
32
+
33
+ return db.table;
34
+ };
35
+
36
+ exports.getTable = getTable;
37
+ const whereKeySuffix = ["_not", "_not_in", "_in", "_gt", "_gte", "_lt", "_lte", "_not_between", "_between"].join("|");
38
+
39
+ const removeWhereKeySuffix = key => {
40
+ return key.replace(new RegExp(`${whereKeySuffix}$`), "");
41
+ };
42
+
43
+ const compare = (key, compareValue, value) => {
44
+ if (key.endsWith("_not")) {
45
+ return String(value) !== compareValue;
46
+ } else if (key.endsWith("_not_in")) {
47
+ return !compareValue.includes(value);
48
+ } else if (key.endsWith("_in")) {
49
+ return compareValue.includes(value);
50
+ } else if (key.endsWith("_gt")) {
51
+ return value > compareValue;
52
+ } else if (key.endsWith("_gte")) {
53
+ return value >= compareValue;
54
+ } else if (key.endsWith("_lt")) {
55
+ return value < compareValue;
56
+ } else if (key.endsWith("_lte")) {
57
+ return value <= compareValue;
58
+ } else if (key.endsWith("_not_between")) {
59
+ if (!Array.isArray(compareValue) || compareValue.length === 0) {
60
+ throw new _error.default(`Wrong compareValue for "${key}".`);
61
+ }
62
+
63
+ return value < compareValue[0] && value > compareValue[1];
64
+ } else if (key.endsWith("_between")) {
65
+ if (!Array.isArray(compareValue) || compareValue.length === 0) {
66
+ throw new _error.default(`Wrong compareValue for "${key}".`);
67
+ }
68
+
69
+ return value >= compareValue[0] && value <= compareValue[1];
70
+ }
71
+
72
+ return compareValue === value;
73
+ };
74
+
75
+ const whereFilterFactory = (where = {}) => {
76
+ return model => {
77
+ if (!where) {
78
+ return true;
79
+ }
80
+
81
+ for (const key in where) {
82
+ if (where.hasOwnProperty(key) === false) {
83
+ continue;
84
+ }
85
+
86
+ const whereValue = where[key];
87
+ const value = model[removeWhereKeySuffix(key)];
88
+ return compare(key, whereValue, value);
89
+ }
90
+
91
+ return true;
92
+ };
93
+ };
94
+
95
+ exports.whereFilterFactory = whereFilterFactory;
96
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/operations/helpers.ts"],"names":["getDocumentClient","context","driver","db","documentClient","WebinyError","getTable","table","whereKeySuffix","join","removeWhereKeySuffix","key","replace","RegExp","compare","compareValue","value","endsWith","String","includes","Array","isArray","length","whereFilterFactory","where","model","hasOwnProperty","whereValue"],"mappings":"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","sourcesContent":["import { CmsContext } from \"@webiny/api-headless-cms/types\";\nimport { DocumentClient } from \"aws-sdk/clients/dynamodb\";\nimport WebinyError from \"@webiny/error\";\n\nexport const getDocumentClient = (context: CmsContext): DocumentClient => {\n const driver = context.db.driver as any;\n if (!driver || !driver.documentClient) {\n throw new WebinyError(\n `Missing documentDriver on the context db.driver property.`,\n \"DOCUMENT_CLIENT_ERROR\"\n );\n }\n return driver.documentClient;\n};\n\nexport const getTable = (context: CmsContext): string => {\n const db = context.db as any;\n if (!db) {\n throw new WebinyError(\"Missing db on context.\", \"DB_ERROR\");\n } else if (!db.table) {\n throw new WebinyError(\"Missing table on context.db.\", \"TABLE_ERROR\");\n }\n return db.table;\n};\n\nconst whereKeySuffix = [\n \"_not\",\n \"_not_in\",\n \"_in\",\n \"_gt\",\n \"_gte\",\n \"_lt\",\n \"_lte\",\n \"_not_between\",\n \"_between\"\n].join(\"|\");\n\nconst removeWhereKeySuffix = (key: string): string => {\n return key.replace(new RegExp(`${whereKeySuffix}$`), \"\");\n};\n\nconst compare = (key: string, compareValue: any, value: any): boolean => {\n if (key.endsWith(\"_not\")) {\n return String(value) !== compareValue;\n } else if (key.endsWith(\"_not_in\")) {\n return !compareValue.includes(value);\n } else if (key.endsWith(\"_in\")) {\n return compareValue.includes(value);\n } else if (key.endsWith(\"_gt\")) {\n return value > compareValue;\n } else if (key.endsWith(\"_gte\")) {\n return value >= compareValue;\n } else if (key.endsWith(\"_lt\")) {\n return value < compareValue;\n } else if (key.endsWith(\"_lte\")) {\n return value <= compareValue;\n } else if (key.endsWith(\"_not_between\")) {\n if (!Array.isArray(compareValue) || compareValue.length === 0) {\n throw new WebinyError(`Wrong compareValue for \"${key}\".`);\n }\n return value < compareValue[0] && value > compareValue[1];\n } else if (key.endsWith(\"_between\")) {\n if (!Array.isArray(compareValue) || compareValue.length === 0) {\n throw new WebinyError(`Wrong compareValue for \"${key}\".`);\n }\n return value >= compareValue[0] && value <= compareValue[1];\n }\n return compareValue === value;\n};\n\nexport const whereFilterFactory = (where: Record<string, any> = {}) => {\n return model => {\n if (!where) {\n return true;\n }\n for (const key in where) {\n if (where.hasOwnProperty(key) === false) {\n continue;\n }\n const whereValue = where[key];\n const value = model[removeWhereKeySuffix(key)];\n return compare(key, whereValue, value);\n }\n return true;\n };\n};\n"],"file":"helpers.js"}
@@ -0,0 +1,18 @@
1
+ import { CmsContentModel, CmsContentModelStorageOperations, CmsContentModelStorageOperationsCreateArgs, CmsContentModelStorageOperationsDeleteArgs, CmsContentModelStorageOperationsGetArgs, CmsContentModelStorageOperationsUpdateArgs, CmsContext } from "@webiny/api-headless-cms/types";
2
+ interface ConstructorArgs {
3
+ context: CmsContext;
4
+ }
5
+ export default class CmsContentModelDynamo implements CmsContentModelStorageOperations {
6
+ private readonly _context;
7
+ private readonly _table;
8
+ private readonly _entity;
9
+ private get context();
10
+ private get partitionKey();
11
+ constructor(args: ConstructorArgs);
12
+ create(args: CmsContentModelStorageOperationsCreateArgs): Promise<CmsContentModel>;
13
+ delete(args: CmsContentModelStorageOperationsDeleteArgs): Promise<boolean>;
14
+ get(args: CmsContentModelStorageOperationsGetArgs): Promise<CmsContentModel | null>;
15
+ list(): Promise<CmsContentModel[]>;
16
+ update(args: CmsContentModelStorageOperationsUpdateArgs): Promise<CmsContentModel>;
17
+ }
18
+ export {};
@@ -0,0 +1,234 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
12
+ var _error = _interopRequireDefault(require("@webiny/error"));
13
+
14
+ var _configurations = _interopRequireDefault(require("../../configurations"));
15
+
16
+ var _utils = require("../../utils");
17
+
18
+ var _dynamodbToolbox = require("dynamodb-toolbox");
19
+
20
+ var _helpers = require("../helpers");
21
+
22
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
23
+
24
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
25
+
26
+ /**
27
+ * In some cases there are no layout, lockedFields or fields arrays when they are empty.
28
+ * Probably due to some remove empty arrays feature in the ddb lib.
29
+ * We need to ensure that there is always, at least, an empty array on those properties.
30
+ */
31
+ const ensureEmptyArraysExist = model => {
32
+ return _objectSpread(_objectSpread({}, model), {}, {
33
+ fields: model.fields || [],
34
+ layout: model.layout || [],
35
+ lockedFields: model.lockedFields || []
36
+ });
37
+ };
38
+
39
+ class CmsContentModelDynamo {
40
+ get context() {
41
+ return this._context;
42
+ }
43
+
44
+ get partitionKey() {
45
+ return `${(0, _utils.createBasePartitionKey)(this.context)}#CM`;
46
+ }
47
+
48
+ constructor(args) {
49
+ (0, _defineProperty2.default)(this, "_context", void 0);
50
+ (0, _defineProperty2.default)(this, "_table", void 0);
51
+ (0, _defineProperty2.default)(this, "_entity", void 0);
52
+ const {
53
+ context
54
+ } = args;
55
+ this._context = context;
56
+ this._table = new _dynamodbToolbox.Table({
57
+ name: _configurations.default.db().table || (0, _helpers.getTable)(context),
58
+ partitionKey: "PK",
59
+ sortKey: "SK",
60
+ DocumentClient: (0, _helpers.getDocumentClient)(context)
61
+ });
62
+ this._entity = new _dynamodbToolbox.Entity({
63
+ name: "ContentModel",
64
+ table: this._table,
65
+ attributes: {
66
+ PK: {
67
+ partitionKey: true
68
+ },
69
+ SK: {
70
+ sortKey: true
71
+ },
72
+ TYPE: {
73
+ type: "string"
74
+ },
75
+ webinyVersion: {
76
+ type: "string"
77
+ },
78
+ name: {
79
+ type: "string"
80
+ },
81
+ modelId: {
82
+ type: "string"
83
+ },
84
+ locale: {
85
+ type: "string"
86
+ },
87
+ group: {
88
+ type: "map"
89
+ },
90
+ description: {
91
+ type: "string"
92
+ },
93
+ createdOn: {
94
+ type: "string"
95
+ },
96
+ savedOn: {
97
+ type: "string"
98
+ },
99
+ createdBy: {
100
+ type: "map"
101
+ },
102
+ fields: {
103
+ type: "list"
104
+ },
105
+ layout: {
106
+ type: "list"
107
+ },
108
+ lockedFields: {
109
+ type: "list"
110
+ },
111
+ titleFieldId: {
112
+ type: "string"
113
+ }
114
+ }
115
+ });
116
+ }
117
+
118
+ async create(args) {
119
+ const {
120
+ data
121
+ } = args;
122
+
123
+ try {
124
+ await this._entity.put(_objectSpread({
125
+ PK: this.partitionKey,
126
+ SK: data.modelId,
127
+ TYPE: "cms.model",
128
+ webinyVersion: this.context.WEBINY_VERSION
129
+ }, data));
130
+ return data;
131
+ } catch (ex) {
132
+ throw new _error.default(ex.message || `Could not create content model`, ex.code || "CREATE_CONTENT_MODEL_ERROR", {
133
+ data
134
+ });
135
+ }
136
+ }
137
+
138
+ async delete(args) {
139
+ const {
140
+ model
141
+ } = args;
142
+
143
+ try {
144
+ await this._entity.delete({
145
+ PK: this.partitionKey,
146
+ SK: model.modelId
147
+ });
148
+ } catch (ex) {
149
+ throw new _error.default("Could not delete content model.", "DELETE_CONTENT_MODEL_ERROR", {
150
+ model
151
+ });
152
+ }
153
+
154
+ return true;
155
+ }
156
+
157
+ async get(args) {
158
+ const {
159
+ id
160
+ } = args;
161
+
162
+ try {
163
+ const result = await this._entity.get({
164
+ PK: this.partitionKey,
165
+ SK: id
166
+ });
167
+
168
+ if (!result) {
169
+ throw new _error.default("Could not get content model - no result.", "GET_CONTENT_MODEL_ERROR", {
170
+ PK: this.partitionKey,
171
+ SK: id
172
+ });
173
+ } else if (!result.Item) {
174
+ return null;
175
+ }
176
+
177
+ return ensureEmptyArraysExist(result.Item);
178
+ } catch (ex) {
179
+ throw new _error.default("Could not get content model.", "GET_CONTENT_MODEL_ERROR", _objectSpread(_objectSpread({}, ex.data), {}, {
180
+ PK: this.partitionKey,
181
+ SK: id
182
+ }));
183
+ }
184
+ }
185
+
186
+ async list() {
187
+ try {
188
+ const result = await this._entity.query(this.partitionKey, {}, {});
189
+
190
+ if (!result || !Array.isArray(result.Items)) {
191
+ throw new _error.default("Could not list content models - not an array.", "LIST_CONTENT_MODELS_ERROR", {});
192
+ }
193
+
194
+ const items = result.Items;
195
+ return items.map(ensureEmptyArraysExist);
196
+ } catch (ex) {
197
+ throw new _error.default("Could not list content model groups.", "LIST_CONTENT_MODELS_ERROR");
198
+ }
199
+ }
200
+
201
+ async update(args) {
202
+ const {
203
+ model,
204
+ data
205
+ } = args;
206
+
207
+ const dbData = _objectSpread(_objectSpread({
208
+ PK: this.partitionKey,
209
+ SK: model.modelId,
210
+ TYPE: "cms.group"
211
+ }, data), {}, {
212
+ webinyVersion: this.context.WEBINY_VERSION
213
+ });
214
+
215
+ try {
216
+ const result = await this._entity.update(dbData);
217
+
218
+ if (!result) {
219
+ throw new _error.default("Could not create the content model - no result.", "CREATE_CONTENT_MODEL_ERROR");
220
+ }
221
+
222
+ return _objectSpread(_objectSpread({}, model), data);
223
+ } catch (ex) {
224
+ throw new _error.default(ex.message || "Could not create content model.", ex.code || "CREATE_CONTENT_MODEL_ERROR", {
225
+ error: ex,
226
+ data: dbData
227
+ });
228
+ }
229
+ }
230
+
231
+ }
232
+
233
+ exports.default = CmsContentModelDynamo;
234
+ //# sourceMappingURL=CmsContentModelDynamo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/operations/model/CmsContentModelDynamo.ts"],"names":["ensureEmptyArraysExist","model","fields","layout","lockedFields","CmsContentModelDynamo","context","_context","partitionKey","constructor","args","_table","Table","name","configurations","db","table","sortKey","DocumentClient","_entity","Entity","attributes","PK","SK","TYPE","type","webinyVersion","modelId","locale","group","description","createdOn","savedOn","createdBy","titleFieldId","create","data","put","WEBINY_VERSION","ex","WebinyError","message","code","delete","get","id","result","Item","list","query","Array","isArray","Items","items","map","update","dbData","error"],"mappings":"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","sourcesContent":["import {\n CmsContentModel,\n CmsContentModelStorageOperations,\n CmsContentModelStorageOperationsCreateArgs,\n CmsContentModelStorageOperationsDeleteArgs,\n CmsContentModelStorageOperationsGetArgs,\n CmsContentModelStorageOperationsUpdateArgs,\n CmsContext\n} from \"@webiny/api-headless-cms/types\";\nimport WebinyError from \"@webiny/error\";\nimport configurations from \"../../configurations\";\nimport { createBasePartitionKey } from \"../../utils\";\nimport { Entity, Table } from \"dynamodb-toolbox\";\nimport { getDocumentClient, getTable } from \"../helpers\";\n\n/**\n * In some cases there are no layout, lockedFields or fields arrays when they are empty.\n * Probably due to some remove empty arrays feature in the ddb lib.\n * We need to ensure that there is always, at least, an empty array on those properties.\n */\nconst ensureEmptyArraysExist = (model: Partial<CmsContentModel>): CmsContentModel => {\n return {\n ...(model as CmsContentModel),\n fields: model.fields || [],\n layout: model.layout || [],\n lockedFields: model.lockedFields || []\n };\n};\n\ninterface ConstructorArgs {\n context: CmsContext;\n}\n\nexport default class CmsContentModelDynamo implements CmsContentModelStorageOperations {\n private readonly _context: CmsContext;\n private readonly _table: Table;\n private readonly _entity: Entity<any>;\n\n private get context(): CmsContext {\n return this._context;\n }\n\n private get partitionKey(): string {\n return `${createBasePartitionKey(this.context)}#CM`;\n }\n\n public constructor(args: ConstructorArgs) {\n const { context } = args;\n this._context = context;\n this._table = new Table({\n name: configurations.db().table || getTable(context),\n partitionKey: \"PK\",\n sortKey: \"SK\",\n DocumentClient: getDocumentClient(context)\n });\n this._entity = new Entity({\n name: \"ContentModel\",\n table: this._table,\n attributes: {\n PK: {\n partitionKey: true\n },\n SK: {\n sortKey: true\n },\n TYPE: {\n type: \"string\"\n },\n webinyVersion: {\n type: \"string\"\n },\n name: {\n type: \"string\"\n },\n modelId: {\n type: \"string\"\n },\n locale: {\n type: \"string\"\n },\n group: {\n type: \"map\"\n },\n description: {\n type: \"string\"\n },\n createdOn: {\n type: \"string\"\n },\n savedOn: {\n type: \"string\"\n },\n createdBy: {\n type: \"map\"\n },\n fields: {\n type: \"list\"\n },\n layout: {\n type: \"list\"\n },\n lockedFields: {\n type: \"list\"\n },\n titleFieldId: {\n type: \"string\"\n }\n }\n });\n }\n\n public async create(\n args: CmsContentModelStorageOperationsCreateArgs\n ): Promise<CmsContentModel> {\n const { data } = args;\n try {\n await this._entity.put({\n PK: this.partitionKey,\n SK: data.modelId,\n TYPE: \"cms.model\",\n webinyVersion: this.context.WEBINY_VERSION,\n ...data\n });\n return data;\n } catch (ex) {\n throw new WebinyError(\n ex.message || `Could not create content model`,\n ex.code || \"CREATE_CONTENT_MODEL_ERROR\",\n {\n data\n }\n );\n }\n }\n\n public async delete(args: CmsContentModelStorageOperationsDeleteArgs): Promise<boolean> {\n const { model } = args;\n try {\n await this._entity.delete({\n PK: this.partitionKey,\n SK: model.modelId\n });\n } catch (ex) {\n throw new WebinyError(\"Could not delete content model.\", \"DELETE_CONTENT_MODEL_ERROR\", {\n model\n });\n }\n return true;\n }\n public async get(\n args: CmsContentModelStorageOperationsGetArgs\n ): Promise<CmsContentModel | null> {\n const { id } = args;\n try {\n const result = await this._entity.get({\n PK: this.partitionKey,\n SK: id\n });\n if (!result) {\n throw new WebinyError(\n \"Could not get content model - no result.\",\n \"GET_CONTENT_MODEL_ERROR\",\n {\n PK: this.partitionKey,\n SK: id\n }\n );\n } else if (!result.Item) {\n return null;\n }\n return ensureEmptyArraysExist(result.Item);\n } catch (ex) {\n throw new WebinyError(\"Could not get content model.\", \"GET_CONTENT_MODEL_ERROR\", {\n ...ex.data,\n PK: this.partitionKey,\n SK: id\n });\n }\n }\n public async list(): Promise<CmsContentModel[]> {\n try {\n const result = await this._entity.query(this.partitionKey, {}, {});\n if (!result || !Array.isArray(result.Items)) {\n throw new WebinyError(\n \"Could not list content models - not an array.\",\n \"LIST_CONTENT_MODELS_ERROR\",\n {}\n );\n }\n const items: CmsContentModel[] = result.Items;\n return items.map(ensureEmptyArraysExist);\n } catch (ex) {\n throw new WebinyError(\n \"Could not list content model groups.\",\n \"LIST_CONTENT_MODELS_ERROR\"\n );\n }\n }\n\n public async update(\n args: CmsContentModelStorageOperationsUpdateArgs\n ): Promise<CmsContentModel> {\n const { model, data } = args;\n const dbData = {\n PK: this.partitionKey,\n SK: model.modelId,\n TYPE: \"cms.group\",\n ...data,\n webinyVersion: this.context.WEBINY_VERSION\n };\n\n try {\n const result = await this._entity.update(dbData);\n if (!result) {\n throw new WebinyError(\n \"Could not create the content model - no result.\",\n \"CREATE_CONTENT_MODEL_ERROR\"\n );\n }\n return {\n ...model,\n ...data\n };\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create content model.\",\n ex.code || \"CREATE_CONTENT_MODEL_ERROR\",\n {\n error: ex,\n data: dbData\n }\n );\n }\n }\n}\n"],"file":"CmsContentModelDynamo.js"}
@@ -0,0 +1,3 @@
1
+ import { CmsContentModelStorageOperationsProvider } from "@webiny/api-headless-cms/types";
2
+ declare const contentModelStorageOperationsProvider: () => CmsContentModelStorageOperationsProvider;
3
+ export default contentModelStorageOperationsProvider;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _CmsContentModelDynamo = _interopRequireDefault(require("./CmsContentModelDynamo"));
11
+
12
+ const contentModelStorageOperationsProvider = () => ({
13
+ type: "cms-content-model-storage-operations-provider",
14
+ name: "cms-content-model-storage-operations-ddb-crud",
15
+ provide: async ({
16
+ context
17
+ }) => {
18
+ return new _CmsContentModelDynamo.default({
19
+ context
20
+ });
21
+ }
22
+ });
23
+
24
+ var _default = contentModelStorageOperationsProvider;
25
+ exports.default = _default;
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/operations/model/index.ts"],"names":["contentModelStorageOperationsProvider","type","name","provide","context","CmsContentModelDynamo"],"mappings":";;;;;;;;;AAAA;;AAGA,MAAMA,qCAAqC,GAAG,OAAiD;AAC3FC,EAAAA,IAAI,EAAE,+CADqF;AAE3FC,EAAAA,IAAI,EAAE,+CAFqF;AAG3FC,EAAAA,OAAO,EAAE,OAAO;AAAEC,IAAAA;AAAF,GAAP,KAAuB;AAC5B,WAAO,IAAIC,8BAAJ,CAA0B;AAC7BD,MAAAA;AAD6B,KAA1B,CAAP;AAGH;AAP0F,CAAjD,CAA9C;;eAUeJ,qC","sourcesContent":["import CmsContentModelDynamo from \"./CmsContentModelDynamo\";\nimport { CmsContentModelStorageOperationsProvider } from \"@webiny/api-headless-cms/types\";\n\nconst contentModelStorageOperationsProvider = (): CmsContentModelStorageOperationsProvider => ({\n type: \"cms-content-model-storage-operations-provider\",\n name: \"cms-content-model-storage-operations-ddb-crud\",\n provide: async ({ context }) => {\n return new CmsContentModelDynamo({\n context\n });\n }\n});\n\nexport default contentModelStorageOperationsProvider;\n"],"file":"index.js"}
@@ -0,0 +1,42 @@
1
+ import { CmsContentModelGroupStorageOperations, CmsContentModelGroupStorageOperationsCreateArgs, CmsContentModelGroupStorageOperationsDeleteArgs, CmsContentModelGroupStorageOperationsGetArgs, CmsContentModelGroupStorageOperationsListArgs, CmsContentModelGroupStorageOperationsUpdateArgs, CmsContext } from "@webiny/api-headless-cms/types";
2
+ interface ConstructorArgs {
3
+ context: CmsContext;
4
+ }
5
+ export default class CmsContentModelGroupDynamo implements CmsContentModelGroupStorageOperations {
6
+ private readonly _context;
7
+ private readonly _table;
8
+ private readonly _entity;
9
+ private get context();
10
+ private get partitionKey();
11
+ constructor({ context }: ConstructorArgs);
12
+ create({ data }: CmsContentModelGroupStorageOperationsCreateArgs): Promise<{
13
+ webinyVersion: string;
14
+ id: string;
15
+ name: string;
16
+ slug: string;
17
+ locale?: string;
18
+ description?: string;
19
+ icon?: string;
20
+ createdBy?: import("@webiny/api-headless-cms/types").CreatedBy;
21
+ createdOn?: Date;
22
+ savedOn?: Date;
23
+ PK: string;
24
+ SK: string;
25
+ TYPE: string;
26
+ }>;
27
+ delete({ group }: CmsContentModelGroupStorageOperationsDeleteArgs): Promise<boolean>;
28
+ get({ id }: CmsContentModelGroupStorageOperationsGetArgs): Promise<any>;
29
+ list({ where, limit }: CmsContentModelGroupStorageOperationsListArgs): Promise<any>;
30
+ update({ group, data }: CmsContentModelGroupStorageOperationsUpdateArgs): Promise<{
31
+ id: string;
32
+ name: string;
33
+ slug: string;
34
+ locale?: string;
35
+ description?: string;
36
+ icon?: string;
37
+ createdBy?: import("@webiny/api-headless-cms/types").CreatedBy;
38
+ createdOn?: Date;
39
+ savedOn?: Date;
40
+ }>;
41
+ }
42
+ export {};