@webiny/api-aco 0.0.0-unstable.d7f521b032 → 0.0.0-unstable.ecd8734205

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.
@@ -1,8 +1,3 @@
1
- import { CmsModel } from "@webiny/api-headless-cms/types";
2
1
  import { CreateAcoStorageOperationsParams } from "../createAcoStorageOperations";
3
- import { AcoFolderStorageOperations as BaseAcoFolderStorageOperations } from "./folder.types";
4
- interface AcoFolderStorageOperations extends BaseAcoFolderStorageOperations {
5
- getFolderModel(): Promise<CmsModel>;
6
- }
2
+ import { AcoFolderStorageOperations } from "./folder.types";
7
3
  export declare const createFolderOperations: (params: CreateAcoStorageOperationsParams) => AcoFolderStorageOperations;
8
- export {};
@@ -9,147 +9,136 @@ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/obje
9
9
  var _error = _interopRequireDefault(require("@webiny/error"));
10
10
  var _folder = require("./folder.model");
11
11
  var _createAcoStorageOperations = require("../createAcoStorageOperations");
12
+ var _createOperationsWrapper = require("../utils/createOperationsWrapper");
12
13
  var _getFieldValues = require("../utils/getFieldValues");
13
14
  const createFolderOperations = params => {
14
15
  const {
15
- cms,
16
- security
16
+ cms
17
17
  } = params;
18
- const getFolderModel = async () => {
19
- security.disableAuthorization();
20
- const model = await cms.getModel(_folder.FOLDER_MODEL_ID);
21
- security.enableAuthorization();
22
- if (!model) {
23
- throw new _error.default(`Could not find "${_folder.FOLDER_MODEL_ID}" model.`, "MODEL_NOT_FOUND_ERROR");
24
- }
25
- return model;
26
- };
27
- const getFolder = async ({
18
+ const {
19
+ withModel
20
+ } = (0, _createOperationsWrapper.createOperationsWrapper)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, params), {}, {
21
+ modelName: _folder.FOLDER_MODEL_ID
22
+ }));
23
+ const getFolder = ({
28
24
  id,
29
25
  slug,
30
26
  type,
31
27
  parentId
32
28
  }) => {
33
- const model = await getFolderModel();
34
- security.disableAuthorization();
35
- let entry;
36
- if (id) {
37
- entry = await cms.getEntryById(model, id);
38
- } else if (slug && type) {
39
- entry = await cms.getEntry(model, {
40
- where: {
29
+ return withModel(async model => {
30
+ let entry;
31
+ if (id) {
32
+ entry = await cms.getEntryById(model, id);
33
+ } else if (slug && type) {
34
+ entry = await cms.getEntry(model, {
35
+ where: {
36
+ slug,
37
+ type,
38
+ parentId,
39
+ latest: true
40
+ }
41
+ });
42
+ }
43
+ if (!entry) {
44
+ throw new _error.default("Could not load folder.", "GET_FOLDER_ERROR", {
45
+ id,
41
46
  slug,
42
47
  type,
43
- parentId,
44
- latest: true
45
- }
46
- });
47
- }
48
- if (!entry) {
49
- throw new _error.default("Could not load folder.", "GET_FOLDER_ERROR", {
50
- id,
51
- slug,
52
- type,
53
- parentId
54
- });
55
- }
56
- security.enableAuthorization();
57
- return (0, _getFieldValues.getFieldValues)(entry, _createAcoStorageOperations.baseFields);
48
+ parentId
49
+ });
50
+ }
51
+ return (0, _getFieldValues.getFieldValues)(entry, _createAcoStorageOperations.baseFields);
52
+ });
58
53
  };
59
- const checkExistingFolder = async ({
54
+ const checkExistingFolder = ({
60
55
  id,
61
56
  params
62
57
  }) => {
63
- const model = await getFolderModel();
64
- security.disableAuthorization();
65
- const {
66
- type,
67
- slug,
68
- parentId
69
- } = params;
70
- const [existings] = await cms.listLatestEntries(model, {
71
- where: {
58
+ return withModel(async model => {
59
+ const {
72
60
  type,
73
61
  slug,
74
- parentId,
75
- id_not: id
76
- },
77
- limit: 1
78
- });
79
- if (existings.length > 0) {
80
- throw new _error.default(`Folder with slug "${slug}" already exists at this level.`, "FOLDER_ALREADY_EXISTS", {
81
- id,
82
- params
62
+ parentId
63
+ } = params;
64
+ const [existings] = await cms.listLatestEntries(model, {
65
+ where: {
66
+ type,
67
+ slug,
68
+ parentId,
69
+ id_not: id
70
+ },
71
+ limit: 1
83
72
  });
84
- }
85
- security.enableAuthorization();
86
- return;
73
+ if (existings.length > 0) {
74
+ throw new _error.default(`Folder with slug "${slug}" already exists at this level.`, "FOLDER_ALREADY_EXISTS", {
75
+ id,
76
+ params
77
+ });
78
+ }
79
+ return;
80
+ });
87
81
  };
88
82
  return {
89
- getFolderModel,
90
83
  getFolder,
91
- async listFolders(params) {
92
- const model = await getFolderModel();
93
- security.disableAuthorization();
94
- const [entries, meta] = await cms.listLatestEntries(model, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, params), {}, {
95
- where: (0, _objectSpread2.default)({}, params.where || {})
96
- }));
97
- security.enableAuthorization();
98
- return [entries.map(entry => (0, _getFieldValues.getFieldValues)(entry, _createAcoStorageOperations.baseFields)), meta];
84
+ listFolders(params) {
85
+ return withModel(async model => {
86
+ const [entries, meta] = await cms.listLatestEntries(model, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, params), {}, {
87
+ where: (0, _objectSpread2.default)({}, params.where || {})
88
+ }));
89
+ return [entries.map(entry => (0, _getFieldValues.getFieldValues)(entry, _createAcoStorageOperations.baseFields)), meta];
90
+ });
99
91
  },
100
- async createFolder({
92
+ createFolder({
101
93
  data
102
94
  }) {
103
- const model = await getFolderModel();
104
- security.disableAuthorization();
105
- await checkExistingFolder({
106
- params: {
107
- type: data.type,
108
- slug: data.slug,
109
- parentId: data.parentId
110
- }
95
+ return withModel(async model => {
96
+ await checkExistingFolder({
97
+ params: {
98
+ type: data.type,
99
+ slug: data.slug,
100
+ parentId: data.parentId
101
+ }
102
+ });
103
+ const entry = await cms.createEntry(model, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, data), {}, {
104
+ parentId: data.parentId || null
105
+ }));
106
+ return (0, _getFieldValues.getFieldValues)(entry, _createAcoStorageOperations.baseFields);
111
107
  });
112
- const entry = await cms.createEntry(model, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, data), {}, {
113
- parentId: data.parentId || null
114
- }));
115
- security.enableAuthorization();
116
- return (0, _getFieldValues.getFieldValues)(entry, _createAcoStorageOperations.baseFields);
117
108
  },
118
- async updateFolder({
109
+ updateFolder({
119
110
  id,
120
111
  data
121
112
  }) {
122
- const {
123
- slug,
124
- parentId
125
- } = data;
126
- const model = await getFolderModel();
127
- security.disableAuthorization();
128
- const original = await getFolder({
129
- id
130
- });
131
- await checkExistingFolder({
132
- id,
133
- params: {
134
- type: original.type,
135
- slug: slug || original.slug,
136
- parentId: parentId !== undefined ? parentId : original.parentId // parentId can be `null`
137
- }
138
- });
113
+ return withModel(async model => {
114
+ const {
115
+ slug,
116
+ parentId
117
+ } = data;
118
+ const original = await getFolder({
119
+ id
120
+ });
121
+ await checkExistingFolder({
122
+ id,
123
+ params: {
124
+ type: original.type,
125
+ slug: slug || original.slug,
126
+ parentId: parentId !== undefined ? parentId : original.parentId // parentId can be `null`
127
+ }
128
+ });
139
129
 
140
- const input = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, original), data);
141
- const entry = await cms.updateEntry(model, id, input);
142
- security.enableAuthorization();
143
- return (0, _getFieldValues.getFieldValues)(entry, _createAcoStorageOperations.baseFields);
130
+ const input = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, original), data);
131
+ const entry = await cms.updateEntry(model, id, input);
132
+ return (0, _getFieldValues.getFieldValues)(entry, _createAcoStorageOperations.baseFields);
133
+ });
144
134
  },
145
- async deleteFolder({
135
+ deleteFolder({
146
136
  id
147
137
  }) {
148
- const model = await getFolderModel();
149
- security.disableAuthorization();
150
- await cms.deleteEntry(model, id);
151
- security.enableAuthorization();
152
- return true;
138
+ return withModel(async model => {
139
+ await cms.deleteEntry(model, id);
140
+ return true;
141
+ });
153
142
  }
154
143
  };
155
144
  };
@@ -1 +1 @@
1
- {"version":3,"names":["createFolderOperations","params","cms","security","getFolderModel","disableAuthorization","model","getModel","FOLDER_MODEL_ID","enableAuthorization","WebinyError","getFolder","id","slug","type","parentId","entry","getEntryById","getEntry","where","latest","getFieldValues","baseFields","checkExistingFolder","existings","listLatestEntries","id_not","limit","length","listFolders","entries","meta","map","createFolder","data","createEntry","updateFolder","original","undefined","input","updateEntry","deleteFolder","deleteEntry"],"sources":["folder.so.ts"],"sourcesContent":["import { CmsModel } from \"@webiny/api-headless-cms/types\";\nimport WebinyError from \"@webiny/error\";\n\nimport { FOLDER_MODEL_ID } from \"./folder.model\";\nimport { baseFields, CreateAcoStorageOperationsParams } from \"~/createAcoStorageOperations\";\nimport { getFieldValues } from \"~/utils/getFieldValues\";\n\nimport { AcoFolderStorageOperations as BaseAcoFolderStorageOperations } from \"./folder.types\";\n\ninterface AcoFolderStorageOperations extends BaseAcoFolderStorageOperations {\n getFolderModel(): Promise<CmsModel>;\n}\n\ninterface AcoCheckExistingFolderParams {\n params: {\n type: string;\n slug: string;\n parentId?: string | null;\n };\n id?: string;\n}\n\nexport const createFolderOperations = (\n params: CreateAcoStorageOperationsParams\n): AcoFolderStorageOperations => {\n const { cms, security } = params;\n const getFolderModel = async () => {\n security.disableAuthorization();\n const model = await cms.getModel(FOLDER_MODEL_ID);\n security.enableAuthorization();\n if (!model) {\n throw new WebinyError(\n `Could not find \"${FOLDER_MODEL_ID}\" model.`,\n \"MODEL_NOT_FOUND_ERROR\"\n );\n }\n return model;\n };\n\n const getFolder: AcoFolderStorageOperations[\"getFolder\"] = async ({\n id,\n slug,\n type,\n parentId\n }) => {\n const model = await getFolderModel();\n security.disableAuthorization();\n\n let entry;\n\n if (id) {\n entry = await cms.getEntryById(model, id);\n } else if (slug && type) {\n entry = await cms.getEntry(model, { where: { slug, type, parentId, latest: true } });\n }\n\n if (!entry) {\n throw new WebinyError(\"Could not load folder.\", \"GET_FOLDER_ERROR\", {\n id,\n slug,\n type,\n parentId\n });\n }\n\n security.enableAuthorization();\n return getFieldValues(entry, baseFields);\n };\n\n const checkExistingFolder = async ({ id, params }: AcoCheckExistingFolderParams) => {\n const model = await getFolderModel();\n security.disableAuthorization();\n\n const { type, slug, parentId } = params;\n\n const [existings] = await cms.listLatestEntries(model, {\n where: {\n type,\n slug,\n parentId,\n id_not: id\n },\n limit: 1\n });\n\n if (existings.length > 0) {\n throw new WebinyError(\n `Folder with slug \"${slug}\" already exists at this level.`,\n \"FOLDER_ALREADY_EXISTS\",\n {\n id,\n params\n }\n );\n }\n\n security.enableAuthorization();\n return;\n };\n\n return {\n getFolderModel,\n getFolder,\n async listFolders(params) {\n const model = await getFolderModel();\n security.disableAuthorization();\n\n const [entries, meta] = await cms.listLatestEntries(model, {\n ...params,\n where: {\n ...(params.where || {})\n }\n });\n\n security.enableAuthorization();\n return [entries.map(entry => getFieldValues(entry, baseFields)), meta];\n },\n async createFolder({ data }) {\n const model = await getFolderModel();\n security.disableAuthorization();\n\n await checkExistingFolder({\n params: {\n type: data.type,\n slug: data.slug,\n parentId: data.parentId\n }\n });\n\n const entry = await cms.createEntry(model, {\n ...data,\n parentId: data.parentId || null\n });\n\n security.enableAuthorization();\n return getFieldValues(entry, baseFields);\n },\n async updateFolder({ id, data }) {\n const { slug, parentId } = data;\n const model = await getFolderModel();\n security.disableAuthorization();\n\n const original = await getFolder({ id });\n\n await checkExistingFolder({\n id,\n params: {\n type: original.type,\n slug: slug || original.slug,\n parentId: parentId !== undefined ? parentId : original.parentId // parentId can be `null`\n }\n });\n\n const input = {\n ...original,\n ...data\n };\n\n const entry = await cms.updateEntry(model, id, input);\n security.enableAuthorization();\n return getFieldValues(entry, baseFields);\n },\n async deleteFolder({ id }) {\n const model = await getFolderModel();\n security.disableAuthorization();\n\n await cms.deleteEntry(model, id);\n\n security.enableAuthorization();\n return true;\n }\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["createFolderOperations","params","cms","withModel","createOperationsWrapper","modelName","FOLDER_MODEL_ID","getFolder","id","slug","type","parentId","model","entry","getEntryById","getEntry","where","latest","WebinyError","getFieldValues","baseFields","checkExistingFolder","existings","listLatestEntries","id_not","limit","length","listFolders","entries","meta","map","createFolder","data","createEntry","updateFolder","original","undefined","input","updateEntry","deleteFolder","deleteEntry"],"sources":["folder.so.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\n\nimport { FOLDER_MODEL_ID } from \"./folder.model\";\nimport { baseFields, CreateAcoStorageOperationsParams } from \"~/createAcoStorageOperations\";\nimport { createOperationsWrapper } from \"~/utils/createOperationsWrapper\";\nimport { getFieldValues } from \"~/utils/getFieldValues\";\n\nimport { AcoFolderStorageOperations } from \"./folder.types\";\n\ninterface AcoCheckExistingFolderParams {\n params: {\n type: string;\n slug: string;\n parentId?: string | null;\n };\n id?: string;\n}\n\nexport const createFolderOperations = (\n params: CreateAcoStorageOperationsParams\n): AcoFolderStorageOperations => {\n const { cms } = params;\n\n const { withModel } = createOperationsWrapper({\n ...params,\n modelName: FOLDER_MODEL_ID\n });\n\n const getFolder: AcoFolderStorageOperations[\"getFolder\"] = ({ id, slug, type, parentId }) => {\n return withModel(async model => {\n let entry;\n\n if (id) {\n entry = await cms.getEntryById(model, id);\n } else if (slug && type) {\n entry = await cms.getEntry(model, {\n where: { slug, type, parentId, latest: true }\n });\n }\n\n if (!entry) {\n throw new WebinyError(\"Could not load folder.\", \"GET_FOLDER_ERROR\", {\n id,\n slug,\n type,\n parentId\n });\n }\n\n return getFieldValues(entry, baseFields);\n });\n };\n\n const checkExistingFolder = ({ id, params }: AcoCheckExistingFolderParams) => {\n return withModel(async model => {\n const { type, slug, parentId } = params;\n\n const [existings] = await cms.listLatestEntries(model, {\n where: {\n type,\n slug,\n parentId,\n id_not: id\n },\n limit: 1\n });\n\n if (existings.length > 0) {\n throw new WebinyError(\n `Folder with slug \"${slug}\" already exists at this level.`,\n \"FOLDER_ALREADY_EXISTS\",\n {\n id,\n params\n }\n );\n }\n\n return;\n });\n };\n\n return {\n getFolder,\n listFolders(params) {\n return withModel(async model => {\n const [entries, meta] = await cms.listLatestEntries(model, {\n ...params,\n where: {\n ...(params.where || {})\n }\n });\n\n return [entries.map(entry => getFieldValues(entry, baseFields)), meta];\n });\n },\n createFolder({ data }) {\n return withModel(async model => {\n await checkExistingFolder({\n params: {\n type: data.type,\n slug: data.slug,\n parentId: data.parentId\n }\n });\n\n const entry = await cms.createEntry(model, {\n ...data,\n parentId: data.parentId || null\n });\n\n return getFieldValues(entry, baseFields);\n });\n },\n updateFolder({ id, data }) {\n return withModel(async model => {\n const { slug, parentId } = data;\n\n const original = await getFolder({ id });\n\n await checkExistingFolder({\n id,\n params: {\n type: original.type,\n slug: slug || original.slug,\n parentId: parentId !== undefined ? parentId : original.parentId // parentId can be `null`\n }\n });\n\n const input = {\n ...original,\n ...data\n };\n\n const entry = await cms.updateEntry(model, id, input);\n return getFieldValues(entry, baseFields);\n });\n },\n deleteFolder({ id }) {\n return withModel(async model => {\n await cms.deleteEntry(model, id);\n return true;\n });\n }\n };\n};\n"],"mappings":"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"}
@@ -9,10 +9,10 @@ var _error = _interopRequireDefault(require("@webiny/error"));
9
9
  const onFolderBeforeDeleteHook = ({
10
10
  aco
11
11
  }) => {
12
- try {
13
- aco.folder.onFolderBeforeDelete.subscribe(async ({
14
- folder
15
- }) => {
12
+ aco.folder.onFolderBeforeDelete.subscribe(async ({
13
+ folder
14
+ }) => {
15
+ try {
16
16
  const {
17
17
  id,
18
18
  type
@@ -42,12 +42,12 @@ const onFolderBeforeDeleteHook = ({
42
42
  folder
43
43
  });
44
44
  }
45
- });
46
- } catch (error) {
47
- throw _error.default.from(error, {
48
- message: "Error while executing onFolderBeforeDelete hook",
49
- code: "ACO_BEFORE_FOLDER_DELETE_HOOK"
50
- });
51
- }
45
+ } catch (error) {
46
+ throw _error.default.from(error, {
47
+ message: "Error while executing onFolderBeforeDelete hook",
48
+ code: "ACO_BEFORE_FOLDER_DELETE_HOOK"
49
+ });
50
+ }
51
+ });
52
52
  };
53
53
  exports.onFolderBeforeDeleteHook = onFolderBeforeDeleteHook;
@@ -1 +1 @@
1
- {"version":3,"names":["onFolderBeforeDeleteHook","aco","folder","onFolderBeforeDelete","subscribe","id","type","children","list","where","parentId","limit","records","search","location","folderId","length","WebinyError","error","from","message","code"],"sources":["onFolderBeforeDelete.hook.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { AcoContext } from \"~/types\";\n\nexport const onFolderBeforeDeleteHook = ({ aco }: AcoContext) => {\n try {\n aco.folder.onFolderBeforeDelete.subscribe(async ({ folder }) => {\n const { id, type } = folder;\n\n // Fetching all child folders\n const [children] = await aco.folder.list({\n where: { type, parentId: id },\n limit: 1\n });\n\n // Fetching all records inside the folder\n const [records] = await aco.search.list({\n where: { type, location: { folderId: id } },\n limit: 1\n });\n\n if (children.length > 0 || records.length > 0) {\n throw new WebinyError(\n \"Error: delete all child folders and entries before proceeding.\",\n \"DELETE_FOLDER_WITH_CHILDREN\",\n {\n folder\n }\n );\n }\n });\n } catch (error) {\n throw WebinyError.from(error, {\n message: \"Error while executing onFolderBeforeDelete hook\",\n code: \"ACO_BEFORE_FOLDER_DELETE_HOOK\"\n });\n }\n};\n"],"mappings":";;;;;;;AAAA;AAGO,MAAMA,wBAAwB,GAAG,CAAC;EAAEC;AAAgB,CAAC,KAAK;EAC7D,IAAI;IACAA,GAAG,CAACC,MAAM,CAACC,oBAAoB,CAACC,SAAS,CAAC,OAAO;MAAEF;IAAO,CAAC,KAAK;MAC5D,MAAM;QAAEG,EAAE;QAAEC;MAAK,CAAC,GAAGJ,MAAM;;MAE3B;MACA,MAAM,CAACK,QAAQ,CAAC,GAAG,MAAMN,GAAG,CAACC,MAAM,CAACM,IAAI,CAAC;QACrCC,KAAK,EAAE;UAAEH,IAAI;UAAEI,QAAQ,EAAEL;QAAG,CAAC;QAC7BM,KAAK,EAAE;MACX,CAAC,CAAC;;MAEF;MACA,MAAM,CAACC,OAAO,CAAC,GAAG,MAAMX,GAAG,CAACY,MAAM,CAACL,IAAI,CAAC;QACpCC,KAAK,EAAE;UAAEH,IAAI;UAAEQ,QAAQ,EAAE;YAAEC,QAAQ,EAAEV;UAAG;QAAE,CAAC;QAC3CM,KAAK,EAAE;MACX,CAAC,CAAC;MAEF,IAAIJ,QAAQ,CAACS,MAAM,GAAG,CAAC,IAAIJ,OAAO,CAACI,MAAM,GAAG,CAAC,EAAE;QAC3C,MAAM,IAAIC,cAAW,CACjB,gEAAgE,EAChE,6BAA6B,EAC7B;UACIf;QACJ,CAAC,CACJ;MACL;IACJ,CAAC,CAAC;EACN,CAAC,CAAC,OAAOgB,KAAK,EAAE;IACZ,MAAMD,cAAW,CAACE,IAAI,CAACD,KAAK,EAAE;MAC1BE,OAAO,EAAE,iDAAiD;MAC1DC,IAAI,EAAE;IACV,CAAC,CAAC;EACN;AACJ,CAAC;AAAC"}
1
+ {"version":3,"names":["onFolderBeforeDeleteHook","aco","folder","onFolderBeforeDelete","subscribe","id","type","children","list","where","parentId","limit","records","search","location","folderId","length","WebinyError","error","from","message","code"],"sources":["onFolderBeforeDelete.hook.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { AcoContext } from \"~/types\";\n\nexport const onFolderBeforeDeleteHook = ({ aco }: AcoContext) => {\n aco.folder.onFolderBeforeDelete.subscribe(async ({ folder }) => {\n try {\n const { id, type } = folder;\n\n // Fetching all child folders\n const [children] = await aco.folder.list({\n where: { type, parentId: id },\n limit: 1\n });\n\n // Fetching all records inside the folder\n const [records] = await aco.search.list({\n where: { type, location: { folderId: id } },\n limit: 1\n });\n\n if (children.length > 0 || records.length > 0) {\n throw new WebinyError(\n \"Error: delete all child folders and entries before proceeding.\",\n \"DELETE_FOLDER_WITH_CHILDREN\",\n {\n folder\n }\n );\n }\n } catch (error) {\n throw WebinyError.from(error, {\n message: \"Error while executing onFolderBeforeDelete hook\",\n code: \"ACO_BEFORE_FOLDER_DELETE_HOOK\"\n });\n }\n });\n};\n"],"mappings":";;;;;;;AAAA;AAGO,MAAMA,wBAAwB,GAAG,CAAC;EAAEC;AAAgB,CAAC,KAAK;EAC7DA,GAAG,CAACC,MAAM,CAACC,oBAAoB,CAACC,SAAS,CAAC,OAAO;IAAEF;EAAO,CAAC,KAAK;IAC5D,IAAI;MACA,MAAM;QAAEG,EAAE;QAAEC;MAAK,CAAC,GAAGJ,MAAM;;MAE3B;MACA,MAAM,CAACK,QAAQ,CAAC,GAAG,MAAMN,GAAG,CAACC,MAAM,CAACM,IAAI,CAAC;QACrCC,KAAK,EAAE;UAAEH,IAAI;UAAEI,QAAQ,EAAEL;QAAG,CAAC;QAC7BM,KAAK,EAAE;MACX,CAAC,CAAC;;MAEF;MACA,MAAM,CAACC,OAAO,CAAC,GAAG,MAAMX,GAAG,CAACY,MAAM,CAACL,IAAI,CAAC;QACpCC,KAAK,EAAE;UAAEH,IAAI;UAAEQ,QAAQ,EAAE;YAAEC,QAAQ,EAAEV;UAAG;QAAE,CAAC;QAC3CM,KAAK,EAAE;MACX,CAAC,CAAC;MAEF,IAAIJ,QAAQ,CAACS,MAAM,GAAG,CAAC,IAAIJ,OAAO,CAACI,MAAM,GAAG,CAAC,EAAE;QAC3C,MAAM,IAAIC,cAAW,CACjB,gEAAgE,EAChE,6BAA6B,EAC7B;UACIf;QACJ,CAAC,CACJ;MACL;IACJ,CAAC,CAAC,OAAOgB,KAAK,EAAE;MACZ,MAAMD,cAAW,CAACE,IAAI,CAACD,KAAK,EAAE;QAC1BE,OAAO,EAAE,iDAAiD;QAC1DC,IAAI,EAAE;MACV,CAAC,CAAC;IACN;EACJ,CAAC,CAAC;AACN,CAAC;AAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/api-aco",
3
- "version": "0.0.0-unstable.d7f521b032",
3
+ "version": "0.0.0-unstable.ecd8734205",
4
4
  "main": "index.js",
5
5
  "keywords": [
6
6
  "aco:base"
@@ -27,31 +27,32 @@
27
27
  "@babel/preset-env": "^7.19.4",
28
28
  "@babel/preset-typescript": "^7.18.6",
29
29
  "@babel/runtime": "^7.19.0",
30
- "@webiny/api-headless-cms-ddb": "^0.0.0-unstable.d7f521b032",
31
- "@webiny/api-i18n-ddb": "^0.0.0-unstable.d7f521b032",
32
- "@webiny/api-security-so-ddb": "^0.0.0-unstable.d7f521b032",
33
- "@webiny/api-tenancy-so-ddb": "^0.0.0-unstable.d7f521b032",
34
- "@webiny/api-wcp": "^0.0.0-unstable.d7f521b032",
35
- "@webiny/cli": "^0.0.0-unstable.d7f521b032",
36
- "@webiny/handler-aws": "^0.0.0-unstable.d7f521b032",
37
- "@webiny/plugins": "^0.0.0-unstable.d7f521b032",
38
- "@webiny/project-utils": "^0.0.0-unstable.d7f521b032",
30
+ "@webiny/api-headless-cms-ddb": "^0.0.0-unstable.ecd8734205",
31
+ "@webiny/api-i18n-ddb": "^0.0.0-unstable.ecd8734205",
32
+ "@webiny/api-security-so-ddb": "^0.0.0-unstable.ecd8734205",
33
+ "@webiny/api-tenancy-so-ddb": "^0.0.0-unstable.ecd8734205",
34
+ "@webiny/api-wcp": "^0.0.0-unstable.ecd8734205",
35
+ "@webiny/cli": "^0.0.0-unstable.ecd8734205",
36
+ "@webiny/handler-aws": "^0.0.0-unstable.ecd8734205",
37
+ "@webiny/plugins": "^0.0.0-unstable.ecd8734205",
38
+ "@webiny/project-utils": "^0.0.0-unstable.ecd8734205",
39
39
  "rimraf": "^3.0.2",
40
40
  "ttypescript": "^1.5.13",
41
41
  "typescript": "^4.7.4"
42
42
  },
43
43
  "dependencies": {
44
- "@webiny/api": "0.0.0-unstable.d7f521b032",
45
- "@webiny/api-admin-settings": "0.0.0-unstable.d7f521b032",
46
- "@webiny/api-headless-cms": "0.0.0-unstable.d7f521b032",
47
- "@webiny/api-i18n": "0.0.0-unstable.d7f521b032",
48
- "@webiny/api-security": "0.0.0-unstable.d7f521b032",
49
- "@webiny/api-tenancy": "0.0.0-unstable.d7f521b032",
50
- "@webiny/error": "0.0.0-unstable.d7f521b032",
51
- "@webiny/handler": "0.0.0-unstable.d7f521b032",
52
- "@webiny/handler-graphql": "0.0.0-unstable.d7f521b032",
53
- "@webiny/pubsub": "0.0.0-unstable.d7f521b032",
44
+ "@webiny/api": "0.0.0-unstable.ecd8734205",
45
+ "@webiny/api-admin-settings": "0.0.0-unstable.ecd8734205",
46
+ "@webiny/api-headless-cms": "0.0.0-unstable.ecd8734205",
47
+ "@webiny/api-i18n": "0.0.0-unstable.ecd8734205",
48
+ "@webiny/api-security": "0.0.0-unstable.ecd8734205",
49
+ "@webiny/api-tenancy": "0.0.0-unstable.ecd8734205",
50
+ "@webiny/error": "0.0.0-unstable.ecd8734205",
51
+ "@webiny/handler": "0.0.0-unstable.ecd8734205",
52
+ "@webiny/handler-graphql": "0.0.0-unstable.ecd8734205",
53
+ "@webiny/pubsub": "0.0.0-unstable.ecd8734205",
54
+ "@webiny/utils": "0.0.0-unstable.ecd8734205",
54
55
  "lodash": "4.17.21"
55
56
  },
56
- "gitHead": "d7f521b0325964664dbeb6d2d07e2b6518e53841"
57
+ "gitHead": "ecd8734205e0e21ae04076c28ff9806dad07a730"
57
58
  }
@@ -11,7 +11,6 @@ const searchRecordSchema = new _GraphQLSchemaPlugin.GraphQLSchemaPlugin({
11
11
  typeDefs: /* GraphQL */`
12
12
  type SearchRecord {
13
13
  id: ID!
14
- originalId: ID!
15
14
  type: String!
16
15
  location: SearchLocationType!
17
16
  title: String!
@@ -31,7 +30,7 @@ const searchRecordSchema = new _GraphQLSchemaPlugin.GraphQLSchemaPlugin({
31
30
  }
32
31
 
33
32
  input SearchRecordCreateInput {
34
- originalId: String!
33
+ id: String!
35
34
  type: String!
36
35
  title: String!
37
36
  content: String
@@ -1 +1 @@
1
- {"version":3,"names":["searchRecordSchema","GraphQLSchemaPlugin","typeDefs","resolvers","SearchQuery","getRecord","_","id","context","resolve","aco","search","get","listRecords","args","entries","meta","list","ListResponse","e","ErrorResponse","SearchMutation","createRecord","data","create","updateRecord","update","deleteRecord","delete"],"sources":["record.gql.ts"],"sourcesContent":["import { ErrorResponse, ListResponse } from \"@webiny/handler-graphql/responses\";\nimport { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins/GraphQLSchemaPlugin\";\n\nimport { resolve } from \"~/utils/resolve\";\n\nimport { AcoContext } from \"~/types\";\n\nexport const searchRecordSchema = new GraphQLSchemaPlugin<AcoContext>({\n typeDefs: /* GraphQL */ `\n type SearchRecord {\n id: ID!\n originalId: ID!\n type: String!\n location: SearchLocationType!\n title: String!\n content: String\n data: JSON\n savedOn: DateTime\n createdOn: DateTime\n createdBy: AcoUser\n }\n\n type SearchLocationType {\n folderId: ID!\n }\n\n input SearchLocationInput {\n folderId: ID!\n }\n\n input SearchRecordCreateInput {\n originalId: String!\n type: String!\n title: String!\n content: String\n location: SearchLocationInput!\n data: JSON\n }\n\n input SearchRecordUpdateInput {\n title: String\n content: String\n location: SearchLocationInput\n data: JSON\n }\n\n input SearchRecordListWhereInput {\n type: String!\n location: SearchLocationInput\n }\n\n type SearchRecordResponse {\n data: SearchRecord\n error: AcoError\n }\n\n type SearchRecordListResponse {\n data: [SearchRecord]\n error: AcoError\n meta: AcoMeta\n }\n\n extend type SearchQuery {\n getRecord(id: ID!): SearchRecordResponse\n listRecords(\n where: SearchRecordListWhereInput\n search: String\n limit: Int\n after: String\n sort: [AcoListSort]\n ): SearchRecordListResponse\n }\n\n extend type SearchMutation {\n createRecord(data: SearchRecordCreateInput!): SearchRecordResponse\n updateRecord(id: ID!, data: SearchRecordUpdateInput!): SearchRecordResponse\n deleteRecord(id: ID!): AcoBooleanResponse\n }\n `,\n resolvers: {\n SearchQuery: {\n getRecord: async (_, { id }, context) => {\n return resolve(() => context.aco.search.get(id));\n },\n listRecords: async (_, args: any, context) => {\n try {\n const [entries, meta] = await context.aco.search.list(args);\n return new ListResponse(entries, meta);\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n },\n SearchMutation: {\n createRecord: async (_, { data }, context) => {\n return resolve(() => context.aco.search.create(data));\n },\n updateRecord: async (_, { id, data }, context) => {\n return resolve(() => context.aco.search.update(id, data));\n },\n deleteRecord: async (_, { id }, context) => {\n return resolve(() => context.aco.search.delete(id));\n }\n }\n }\n});\n"],"mappings":";;;;;;AAAA;AACA;AAEA;AAIO,MAAMA,kBAAkB,GAAG,IAAIC,wCAAmB,CAAa;EAClEC,QAAQ,EAAE,aAAe;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;EACDC,SAAS,EAAE;IACPC,WAAW,EAAE;MACTC,SAAS,EAAE,OAAOC,CAAC,EAAE;QAAEC;MAAG,CAAC,EAAEC,OAAO,KAAK;QACrC,OAAO,IAAAC,gBAAO,EAAC,MAAMD,OAAO,CAACE,GAAG,CAACC,MAAM,CAACC,GAAG,CAACL,EAAE,CAAC,CAAC;MACpD,CAAC;MACDM,WAAW,EAAE,OAAOP,CAAC,EAAEQ,IAAS,EAAEN,OAAO,KAAK;QAC1C,IAAI;UACA,MAAM,CAACO,OAAO,EAAEC,IAAI,CAAC,GAAG,MAAMR,OAAO,CAACE,GAAG,CAACC,MAAM,CAACM,IAAI,CAACH,IAAI,CAAC;UAC3D,OAAO,IAAII,uBAAY,CAACH,OAAO,EAAEC,IAAI,CAAC;QAC1C,CAAC,CAAC,OAAOG,CAAC,EAAE;UACR,OAAO,IAAIC,wBAAa,CAACD,CAAC,CAAC;QAC/B;MACJ;IACJ,CAAC;IACDE,cAAc,EAAE;MACZC,YAAY,EAAE,OAAOhB,CAAC,EAAE;QAAEiB;MAAK,CAAC,EAAEf,OAAO,KAAK;QAC1C,OAAO,IAAAC,gBAAO,EAAC,MAAMD,OAAO,CAACE,GAAG,CAACC,MAAM,CAACa,MAAM,CAACD,IAAI,CAAC,CAAC;MACzD,CAAC;MACDE,YAAY,EAAE,OAAOnB,CAAC,EAAE;QAAEC,EAAE;QAAEgB;MAAK,CAAC,EAAEf,OAAO,KAAK;QAC9C,OAAO,IAAAC,gBAAO,EAAC,MAAMD,OAAO,CAACE,GAAG,CAACC,MAAM,CAACe,MAAM,CAACnB,EAAE,EAAEgB,IAAI,CAAC,CAAC;MAC7D,CAAC;MACDI,YAAY,EAAE,OAAOrB,CAAC,EAAE;QAAEC;MAAG,CAAC,EAAEC,OAAO,KAAK;QACxC,OAAO,IAAAC,gBAAO,EAAC,MAAMD,OAAO,CAACE,GAAG,CAACC,MAAM,CAACiB,MAAM,CAACrB,EAAE,CAAC,CAAC;MACvD;IACJ;EACJ;AACJ,CAAC,CAAC;AAAC"}
1
+ {"version":3,"names":["searchRecordSchema","GraphQLSchemaPlugin","typeDefs","resolvers","SearchQuery","getRecord","_","id","context","resolve","aco","search","get","listRecords","args","entries","meta","list","ListResponse","e","ErrorResponse","SearchMutation","createRecord","data","create","updateRecord","update","deleteRecord","delete"],"sources":["record.gql.ts"],"sourcesContent":["import { ErrorResponse, ListResponse } from \"@webiny/handler-graphql/responses\";\nimport { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins/GraphQLSchemaPlugin\";\n\nimport { resolve } from \"~/utils/resolve\";\n\nimport { AcoContext } from \"~/types\";\n\nexport const searchRecordSchema = new GraphQLSchemaPlugin<AcoContext>({\n typeDefs: /* GraphQL */ `\n type SearchRecord {\n id: ID!\n type: String!\n location: SearchLocationType!\n title: String!\n content: String\n data: JSON\n savedOn: DateTime\n createdOn: DateTime\n createdBy: AcoUser\n }\n\n type SearchLocationType {\n folderId: ID!\n }\n\n input SearchLocationInput {\n folderId: ID!\n }\n\n input SearchRecordCreateInput {\n id: String!\n type: String!\n title: String!\n content: String\n location: SearchLocationInput!\n data: JSON\n }\n\n input SearchRecordUpdateInput {\n title: String\n content: String\n location: SearchLocationInput\n data: JSON\n }\n\n input SearchRecordListWhereInput {\n type: String!\n location: SearchLocationInput\n }\n\n type SearchRecordResponse {\n data: SearchRecord\n error: AcoError\n }\n\n type SearchRecordListResponse {\n data: [SearchRecord]\n error: AcoError\n meta: AcoMeta\n }\n\n extend type SearchQuery {\n getRecord(id: ID!): SearchRecordResponse\n listRecords(\n where: SearchRecordListWhereInput\n search: String\n limit: Int\n after: String\n sort: [AcoListSort]\n ): SearchRecordListResponse\n }\n\n extend type SearchMutation {\n createRecord(data: SearchRecordCreateInput!): SearchRecordResponse\n updateRecord(id: ID!, data: SearchRecordUpdateInput!): SearchRecordResponse\n deleteRecord(id: ID!): AcoBooleanResponse\n }\n `,\n resolvers: {\n SearchQuery: {\n getRecord: async (_, { id }, context) => {\n return resolve(() => context.aco.search.get(id));\n },\n listRecords: async (_, args: any, context) => {\n try {\n const [entries, meta] = await context.aco.search.list(args);\n return new ListResponse(entries, meta);\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n },\n SearchMutation: {\n createRecord: async (_, { data }, context) => {\n return resolve(() => context.aco.search.create(data));\n },\n updateRecord: async (_, { id, data }, context) => {\n return resolve(() => context.aco.search.update(id, data));\n },\n deleteRecord: async (_, { id }, context) => {\n return resolve(() => context.aco.search.delete(id));\n }\n }\n }\n});\n"],"mappings":";;;;;;AAAA;AACA;AAEA;AAIO,MAAMA,kBAAkB,GAAG,IAAIC,wCAAmB,CAAa;EAClEC,QAAQ,EAAE,aAAe;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;EACDC,SAAS,EAAE;IACPC,WAAW,EAAE;MACTC,SAAS,EAAE,OAAOC,CAAC,EAAE;QAAEC;MAAG,CAAC,EAAEC,OAAO,KAAK;QACrC,OAAO,IAAAC,gBAAO,EAAC,MAAMD,OAAO,CAACE,GAAG,CAACC,MAAM,CAACC,GAAG,CAACL,EAAE,CAAC,CAAC;MACpD,CAAC;MACDM,WAAW,EAAE,OAAOP,CAAC,EAAEQ,IAAS,EAAEN,OAAO,KAAK;QAC1C,IAAI;UACA,MAAM,CAACO,OAAO,EAAEC,IAAI,CAAC,GAAG,MAAMR,OAAO,CAACE,GAAG,CAACC,MAAM,CAACM,IAAI,CAACH,IAAI,CAAC;UAC3D,OAAO,IAAII,uBAAY,CAACH,OAAO,EAAEC,IAAI,CAAC;QAC1C,CAAC,CAAC,OAAOG,CAAC,EAAE;UACR,OAAO,IAAIC,wBAAa,CAACD,CAAC,CAAC;QAC/B;MACJ;IACJ,CAAC;IACDE,cAAc,EAAE;MACZC,YAAY,EAAE,OAAOhB,CAAC,EAAE;QAAEiB;MAAK,CAAC,EAAEf,OAAO,KAAK;QAC1C,OAAO,IAAAC,gBAAO,EAAC,MAAMD,OAAO,CAACE,GAAG,CAACC,MAAM,CAACa,MAAM,CAACD,IAAI,CAAC,CAAC;MACzD,CAAC;MACDE,YAAY,EAAE,OAAOnB,CAAC,EAAE;QAAEC,EAAE;QAAEgB;MAAK,CAAC,EAAEf,OAAO,KAAK;QAC9C,OAAO,IAAAC,gBAAO,EAAC,MAAMD,OAAO,CAACE,GAAG,CAACC,MAAM,CAACe,MAAM,CAACnB,EAAE,EAAEgB,IAAI,CAAC,CAAC;MAC7D,CAAC;MACDI,YAAY,EAAE,OAAOrB,CAAC,EAAE;QAAEC;MAAG,CAAC,EAAEC,OAAO,KAAK;QACxC,OAAO,IAAAC,gBAAO,EAAC,MAAMD,OAAO,CAACE,GAAG,CAACC,MAAM,CAACiB,MAAM,CAACrB,EAAE,CAAC,CAAC;MACvD;IACJ;EACJ;AACJ,CAAC,CAAC;AAAC"}
@@ -5,18 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.createSearchModelDefinition = exports.SEARCH_RECORD_MODEL_ID = void 0;
7
7
  var _createModelField = require("../utils/createModelField");
8
- const originalIdField = () => (0, _createModelField.createModelField)({
9
- label: "Original Id",
10
- type: "text",
11
- parent: "searchRecord",
12
- validation: [{
13
- name: "required",
14
- message: "Value is required."
15
- }, {
16
- name: "unique",
17
- message: "Value must be unique."
18
- }]
19
- });
20
8
  const typeField = () => (0, _createModelField.createModelField)({
21
9
  label: "Type",
22
10
  type: "text",
@@ -65,9 +53,9 @@ const createSearchModelDefinition = () => {
65
53
  return {
66
54
  name: "ACO - Search Record",
67
55
  modelId: SEARCH_RECORD_MODEL_ID,
68
- titleFieldId: "originalId",
69
- layout: [["searchRecord_originalId"], ["searchRecord_type"], ["searchRecord_title"], ["searchRecord_content"], ["searchRecord_location"], ["searchRecord_data"]],
70
- fields: [originalIdField(), typeField(), titleField(), contentField(), locationField([locationFolderIdField()]), dataField()],
56
+ titleFieldId: "title",
57
+ layout: [["searchRecord_type"], ["searchRecord_title"], ["searchRecord_content"], ["searchRecord_location"], ["searchRecord_data"]],
58
+ fields: [typeField(), titleField(), contentField(), locationField([locationFolderIdField()]), dataField()],
71
59
  description: "ACO - Search record model",
72
60
  isPrivate: true
73
61
  };
@@ -1 +1 @@
1
- {"version":3,"names":["originalIdField","createModelField","label","type","parent","validation","name","message","typeField","titleField","contentField","locationField","fields","multipleValues","settings","locationFolderIdField","dataField","SEARCH_RECORD_MODEL_ID","createSearchModelDefinition","modelId","titleFieldId","layout","description","isPrivate"],"sources":["record.model.ts"],"sourcesContent":["import { CmsModel, CmsModelField } from \"@webiny/api-headless-cms/types\";\n\nimport { createModelField } from \"~/utils/createModelField\";\n\nexport type SearchRecordModelDefinition = Pick<\n CmsModel,\n \"name\" | \"modelId\" | \"layout\" | \"titleFieldId\" | \"description\" | \"fields\" | \"isPrivate\"\n>;\n\nconst originalIdField = () =>\n createModelField({\n label: \"Original Id\",\n type: \"text\",\n parent: \"searchRecord\",\n validation: [\n {\n name: \"required\",\n message: \"Value is required.\"\n },\n {\n name: \"unique\",\n message: \"Value must be unique.\"\n }\n ]\n });\n\nconst typeField = () =>\n createModelField({\n label: \"Type\",\n type: \"text\",\n parent: \"searchRecord\",\n validation: [\n {\n name: \"required\",\n message: \"Value is required.\"\n }\n ]\n });\n\nconst titleField = () =>\n createModelField({\n label: \"Title\",\n type: \"text\",\n parent: \"searchRecord\"\n });\n\nconst contentField = () =>\n createModelField({\n label: \"Content\",\n type: \"text\",\n parent: \"searchRecord\"\n });\n\nconst locationField = (fields: CmsModelField[]) =>\n createModelField({\n label: \"Location\",\n type: \"object\",\n parent: \"searchRecord\",\n multipleValues: false,\n settings: { fields }\n });\n\nconst locationFolderIdField = () =>\n createModelField({\n label: \"Folder Id\",\n type: \"text\",\n parent: \"searchRecord Location\",\n validation: [\n {\n name: \"required\",\n message: \"Value is required.\"\n }\n ]\n });\n\nconst dataField = () =>\n createModelField({\n label: \"Data\",\n type: \"wby-aco-json\",\n parent: \"searchRecord\"\n });\n\nexport const SEARCH_RECORD_MODEL_ID = \"acoSearchRecordModelDefinition\";\n\nexport const createSearchModelDefinition = (): SearchRecordModelDefinition => {\n return {\n name: \"ACO - Search Record\",\n modelId: SEARCH_RECORD_MODEL_ID,\n titleFieldId: \"originalId\",\n layout: [\n [\"searchRecord_originalId\"],\n [\"searchRecord_type\"],\n [\"searchRecord_title\"],\n [\"searchRecord_content\"],\n [\"searchRecord_location\"],\n [\"searchRecord_data\"]\n ],\n fields: [\n originalIdField(),\n typeField(),\n titleField(),\n contentField(),\n locationField([locationFolderIdField()]),\n dataField()\n ],\n description: \"ACO - Search record model\",\n isPrivate: true\n };\n};\n"],"mappings":";;;;;;AAEA;AAOA,MAAMA,eAAe,GAAG,MACpB,IAAAC,kCAAgB,EAAC;EACbC,KAAK,EAAE,aAAa;EACpBC,IAAI,EAAE,MAAM;EACZC,MAAM,EAAE,cAAc;EACtBC,UAAU,EAAE,CACR;IACIC,IAAI,EAAE,UAAU;IAChBC,OAAO,EAAE;EACb,CAAC,EACD;IACID,IAAI,EAAE,QAAQ;IACdC,OAAO,EAAE;EACb,CAAC;AAET,CAAC,CAAC;AAEN,MAAMC,SAAS,GAAG,MACd,IAAAP,kCAAgB,EAAC;EACbC,KAAK,EAAE,MAAM;EACbC,IAAI,EAAE,MAAM;EACZC,MAAM,EAAE,cAAc;EACtBC,UAAU,EAAE,CACR;IACIC,IAAI,EAAE,UAAU;IAChBC,OAAO,EAAE;EACb,CAAC;AAET,CAAC,CAAC;AAEN,MAAME,UAAU,GAAG,MACf,IAAAR,kCAAgB,EAAC;EACbC,KAAK,EAAE,OAAO;EACdC,IAAI,EAAE,MAAM;EACZC,MAAM,EAAE;AACZ,CAAC,CAAC;AAEN,MAAMM,YAAY,GAAG,MACjB,IAAAT,kCAAgB,EAAC;EACbC,KAAK,EAAE,SAAS;EAChBC,IAAI,EAAE,MAAM;EACZC,MAAM,EAAE;AACZ,CAAC,CAAC;AAEN,MAAMO,aAAa,GAAIC,MAAuB,IAC1C,IAAAX,kCAAgB,EAAC;EACbC,KAAK,EAAE,UAAU;EACjBC,IAAI,EAAE,QAAQ;EACdC,MAAM,EAAE,cAAc;EACtBS,cAAc,EAAE,KAAK;EACrBC,QAAQ,EAAE;IAAEF;EAAO;AACvB,CAAC,CAAC;AAEN,MAAMG,qBAAqB,GAAG,MAC1B,IAAAd,kCAAgB,EAAC;EACbC,KAAK,EAAE,WAAW;EAClBC,IAAI,EAAE,MAAM;EACZC,MAAM,EAAE,uBAAuB;EAC/BC,UAAU,EAAE,CACR;IACIC,IAAI,EAAE,UAAU;IAChBC,OAAO,EAAE;EACb,CAAC;AAET,CAAC,CAAC;AAEN,MAAMS,SAAS,GAAG,MACd,IAAAf,kCAAgB,EAAC;EACbC,KAAK,EAAE,MAAM;EACbC,IAAI,EAAE,cAAc;EACpBC,MAAM,EAAE;AACZ,CAAC,CAAC;AAEC,MAAMa,sBAAsB,GAAG,gCAAgC;AAAC;AAEhE,MAAMC,2BAA2B,GAAG,MAAmC;EAC1E,OAAO;IACHZ,IAAI,EAAE,qBAAqB;IAC3Ba,OAAO,EAAEF,sBAAsB;IAC/BG,YAAY,EAAE,YAAY;IAC1BC,MAAM,EAAE,CACJ,CAAC,yBAAyB,CAAC,EAC3B,CAAC,mBAAmB,CAAC,EACrB,CAAC,oBAAoB,CAAC,EACtB,CAAC,sBAAsB,CAAC,EACxB,CAAC,uBAAuB,CAAC,EACzB,CAAC,mBAAmB,CAAC,CACxB;IACDT,MAAM,EAAE,CACJZ,eAAe,EAAE,EACjBQ,SAAS,EAAE,EACXC,UAAU,EAAE,EACZC,YAAY,EAAE,EACdC,aAAa,CAAC,CAACI,qBAAqB,EAAE,CAAC,CAAC,EACxCC,SAAS,EAAE,CACd;IACDM,WAAW,EAAE,2BAA2B;IACxCC,SAAS,EAAE;EACf,CAAC;AACL,CAAC;AAAC"}
1
+ {"version":3,"names":["typeField","createModelField","label","type","parent","validation","name","message","titleField","contentField","locationField","fields","multipleValues","settings","locationFolderIdField","dataField","SEARCH_RECORD_MODEL_ID","createSearchModelDefinition","modelId","titleFieldId","layout","description","isPrivate"],"sources":["record.model.ts"],"sourcesContent":["import { CmsModel, CmsModelField } from \"@webiny/api-headless-cms/types\";\n\nimport { createModelField } from \"~/utils/createModelField\";\n\nexport type SearchRecordModelDefinition = Pick<\n CmsModel,\n \"name\" | \"modelId\" | \"layout\" | \"titleFieldId\" | \"description\" | \"fields\" | \"isPrivate\"\n>;\n\nconst typeField = () =>\n createModelField({\n label: \"Type\",\n type: \"text\",\n parent: \"searchRecord\",\n validation: [\n {\n name: \"required\",\n message: \"Value is required.\"\n }\n ]\n });\n\nconst titleField = () =>\n createModelField({\n label: \"Title\",\n type: \"text\",\n parent: \"searchRecord\"\n });\n\nconst contentField = () =>\n createModelField({\n label: \"Content\",\n type: \"text\",\n parent: \"searchRecord\"\n });\n\nconst locationField = (fields: CmsModelField[]) =>\n createModelField({\n label: \"Location\",\n type: \"object\",\n parent: \"searchRecord\",\n multipleValues: false,\n settings: { fields }\n });\n\nconst locationFolderIdField = () =>\n createModelField({\n label: \"Folder Id\",\n type: \"text\",\n parent: \"searchRecord Location\",\n validation: [\n {\n name: \"required\",\n message: \"Value is required.\"\n }\n ]\n });\n\nconst dataField = () =>\n createModelField({\n label: \"Data\",\n type: \"wby-aco-json\",\n parent: \"searchRecord\"\n });\n\nexport const SEARCH_RECORD_MODEL_ID = \"acoSearchRecordModelDefinition\";\n\nexport const createSearchModelDefinition = (): SearchRecordModelDefinition => {\n return {\n name: \"ACO - Search Record\",\n modelId: SEARCH_RECORD_MODEL_ID,\n titleFieldId: \"title\",\n layout: [\n [\"searchRecord_type\"],\n [\"searchRecord_title\"],\n [\"searchRecord_content\"],\n [\"searchRecord_location\"],\n [\"searchRecord_data\"]\n ],\n fields: [\n typeField(),\n titleField(),\n contentField(),\n locationField([locationFolderIdField()]),\n dataField()\n ],\n description: \"ACO - Search record model\",\n isPrivate: true\n };\n};\n"],"mappings":";;;;;;AAEA;AAOA,MAAMA,SAAS,GAAG,MACd,IAAAC,kCAAgB,EAAC;EACbC,KAAK,EAAE,MAAM;EACbC,IAAI,EAAE,MAAM;EACZC,MAAM,EAAE,cAAc;EACtBC,UAAU,EAAE,CACR;IACIC,IAAI,EAAE,UAAU;IAChBC,OAAO,EAAE;EACb,CAAC;AAET,CAAC,CAAC;AAEN,MAAMC,UAAU,GAAG,MACf,IAAAP,kCAAgB,EAAC;EACbC,KAAK,EAAE,OAAO;EACdC,IAAI,EAAE,MAAM;EACZC,MAAM,EAAE;AACZ,CAAC,CAAC;AAEN,MAAMK,YAAY,GAAG,MACjB,IAAAR,kCAAgB,EAAC;EACbC,KAAK,EAAE,SAAS;EAChBC,IAAI,EAAE,MAAM;EACZC,MAAM,EAAE;AACZ,CAAC,CAAC;AAEN,MAAMM,aAAa,GAAIC,MAAuB,IAC1C,IAAAV,kCAAgB,EAAC;EACbC,KAAK,EAAE,UAAU;EACjBC,IAAI,EAAE,QAAQ;EACdC,MAAM,EAAE,cAAc;EACtBQ,cAAc,EAAE,KAAK;EACrBC,QAAQ,EAAE;IAAEF;EAAO;AACvB,CAAC,CAAC;AAEN,MAAMG,qBAAqB,GAAG,MAC1B,IAAAb,kCAAgB,EAAC;EACbC,KAAK,EAAE,WAAW;EAClBC,IAAI,EAAE,MAAM;EACZC,MAAM,EAAE,uBAAuB;EAC/BC,UAAU,EAAE,CACR;IACIC,IAAI,EAAE,UAAU;IAChBC,OAAO,EAAE;EACb,CAAC;AAET,CAAC,CAAC;AAEN,MAAMQ,SAAS,GAAG,MACd,IAAAd,kCAAgB,EAAC;EACbC,KAAK,EAAE,MAAM;EACbC,IAAI,EAAE,cAAc;EACpBC,MAAM,EAAE;AACZ,CAAC,CAAC;AAEC,MAAMY,sBAAsB,GAAG,gCAAgC;AAAC;AAEhE,MAAMC,2BAA2B,GAAG,MAAmC;EAC1E,OAAO;IACHX,IAAI,EAAE,qBAAqB;IAC3BY,OAAO,EAAEF,sBAAsB;IAC/BG,YAAY,EAAE,OAAO;IACrBC,MAAM,EAAE,CACJ,CAAC,mBAAmB,CAAC,EACrB,CAAC,oBAAoB,CAAC,EACtB,CAAC,sBAAsB,CAAC,EACxB,CAAC,uBAAuB,CAAC,EACzB,CAAC,mBAAmB,CAAC,CACxB;IACDT,MAAM,EAAE,CACJX,SAAS,EAAE,EACXQ,UAAU,EAAE,EACZC,YAAY,EAAE,EACdC,aAAa,CAAC,CAACI,qBAAqB,EAAE,CAAC,CAAC,EACxCC,SAAS,EAAE,CACd;IACDM,WAAW,EAAE,2BAA2B;IACxCC,SAAS,EAAE;EACf,CAAC;AACL,CAAC;AAAC"}
@@ -1,8 +1,3 @@
1
- import { CmsModel } from "@webiny/api-headless-cms/types";
2
1
  import { CreateAcoStorageOperationsParams } from "../createAcoStorageOperations";
3
- import { AcoSearchRecordStorageOperations as BaseAcoSearchRecordStorageOperations } from "./record.types";
4
- interface AcoSearchRecordStorageOperations extends BaseAcoSearchRecordStorageOperations {
5
- getRecordModel(): Promise<CmsModel>;
6
- }
2
+ import { AcoSearchRecordStorageOperations } from "./record.types";
7
3
  export declare const createSearchRecordOperations: (params: CreateAcoStorageOperationsParams) => AcoSearchRecordStorageOperations;
8
- export {};
@@ -6,94 +6,86 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.createSearchRecordOperations = void 0;
8
8
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
9
+ var _valueKeyStorageConverter = require("@webiny/api-headless-cms/utils/converters/valueKeyStorageConverter");
9
10
  var _error = _interopRequireDefault(require("@webiny/error"));
10
11
  var _record = require("./record.model");
11
12
  var _createAcoStorageOperations = require("../createAcoStorageOperations");
13
+ var _createOperationsWrapper = require("../utils/createOperationsWrapper");
12
14
  var _getFieldValues = require("../utils/getFieldValues");
13
15
  const createSearchRecordOperations = params => {
14
16
  const {
15
17
  cms,
16
- security
18
+ getCmsContext
17
19
  } = params;
18
- const getRecordModel = async () => {
19
- security.disableAuthorization();
20
- const model = await cms.getModel(_record.SEARCH_RECORD_MODEL_ID);
21
- security.enableAuthorization();
22
- if (!model) {
23
- throw new _error.default(`Could not find "${_record.SEARCH_RECORD_MODEL_ID}" model.`, "MODEL_NOT_FOUND_ERROR");
24
- }
25
- return model;
26
- };
27
- const getRecord = async ({
28
- id
29
- }) => {
30
- const model = await getRecordModel();
31
- security.disableAuthorization();
20
+ const {
21
+ withModel
22
+ } = (0, _createOperationsWrapper.createOperationsWrapper)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, params), {}, {
23
+ modelName: _record.SEARCH_RECORD_MODEL_ID
24
+ }));
25
+ const getRecord = async (initialModel, id) => {
26
+ const context = getCmsContext();
27
+ const model = (0, _valueKeyStorageConverter.attachCmsModelFieldConverters)({
28
+ model: initialModel,
29
+ plugins: context.plugins
30
+ });
32
31
 
33
32
  /**
34
- * The record "id" is generated on creation.
35
- * Still, we need to get/update/delete records by the original entry id.
33
+ * The record "id" has been passed by the original entry.
34
+ * We need to retrieve it via `cms.storageOperations.entries.getLatestByIds()` method and return the first one.
36
35
  */
37
- const entry = await cms.getEntry(model, {
38
- where: {
39
- originalId: id,
40
- latest: true
41
- }
36
+ const revisions = await cms.storageOperations.entries.getLatestByIds(model, {
37
+ ids: [id]
42
38
  });
43
- if (!entry) {
44
- throw new _error.default("Could not load record.", "GET_ENTRY_ERROR", {
39
+ if (revisions.length === 0) {
40
+ throw new _error.default("Record not found.", "NOT_FOUND", {
45
41
  id
46
42
  });
47
43
  }
48
- security.enableAuthorization();
49
- return (0, _getFieldValues.getFieldValues)(entry, _createAcoStorageOperations.baseFields);
44
+ return revisions[0];
50
45
  };
51
46
  return {
52
- getRecordModel,
53
- getRecord,
54
- async listRecords(params) {
55
- const model = await getRecordModel();
56
- security.disableAuthorization();
57
- const [entries, meta] = await cms.listLatestEntries(model, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, params), {}, {
58
- where: (0, _objectSpread2.default)({}, params.where || {})
59
- }));
60
- security.enableAuthorization();
61
- return [entries.map(entry => (0, _getFieldValues.getFieldValues)(entry, _createAcoStorageOperations.baseFields)), meta];
47
+ async getRecord({
48
+ id
49
+ }) {
50
+ return withModel(async model => {
51
+ const record = await getRecord(model, id);
52
+ return (0, _getFieldValues.getFieldValues)(record, _createAcoStorageOperations.baseFields, true);
53
+ });
54
+ },
55
+ listRecords(params) {
56
+ return withModel(async model => {
57
+ const [entries, meta] = await cms.listLatestEntries(model, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, params), {}, {
58
+ where: (0, _objectSpread2.default)({}, params.where || {})
59
+ }));
60
+ return [entries.map(entry => (0, _getFieldValues.getFieldValues)(entry, _createAcoStorageOperations.baseFields, true)), meta];
61
+ });
62
62
  },
63
- async createRecord({
63
+ createRecord({
64
64
  data
65
65
  }) {
66
- const model = await getRecordModel();
67
- security.disableAuthorization();
68
- const entry = await cms.createEntry(model, data);
69
- security.enableAuthorization();
70
- return (0, _getFieldValues.getFieldValues)(entry, _createAcoStorageOperations.baseFields);
66
+ return withModel(async model => {
67
+ const entry = await cms.createEntry(model, data);
68
+ return (0, _getFieldValues.getFieldValues)(entry, _createAcoStorageOperations.baseFields, true);
69
+ });
71
70
  },
72
- async updateRecord({
71
+ updateRecord({
73
72
  id,
74
73
  data
75
74
  }) {
76
- const model = await getRecordModel();
77
- security.disableAuthorization();
78
- const original = await getRecord({
79
- id
75
+ return withModel(async model => {
76
+ const original = await getRecord(model, id);
77
+ const input = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, original), data);
78
+ const entry = await cms.updateEntry(model, original.id, input);
79
+ return (0, _getFieldValues.getFieldValues)(entry, _createAcoStorageOperations.baseFields, true);
80
80
  });
81
- const input = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, original), data);
82
- const entry = await cms.updateEntry(model, original.id, input);
83
- security.enableAuthorization();
84
- return (0, _getFieldValues.getFieldValues)(entry, _createAcoStorageOperations.baseFields);
85
81
  },
86
- async deleteRecord({
82
+ deleteRecord({
87
83
  id
88
84
  }) {
89
- const model = await getRecordModel();
90
- security.disableAuthorization();
91
- const entry = await getRecord({
92
- id
85
+ return withModel(async model => {
86
+ await cms.deleteEntry(model, id);
87
+ return true;
93
88
  });
94
- await cms.deleteEntry(model, entry.id);
95
- security.enableAuthorization();
96
- return true;
97
89
  }
98
90
  };
99
91
  };
@@ -1 +1 @@
1
- {"version":3,"names":["createSearchRecordOperations","params","cms","security","getRecordModel","disableAuthorization","model","getModel","SEARCH_RECORD_MODEL_ID","enableAuthorization","WebinyError","getRecord","id","entry","getEntry","where","originalId","latest","getFieldValues","baseFields","listRecords","entries","meta","listLatestEntries","map","createRecord","data","createEntry","updateRecord","original","input","updateEntry","deleteRecord","deleteEntry"],"sources":["record.so.ts"],"sourcesContent":["import { CmsModel } from \"@webiny/api-headless-cms/types\";\nimport WebinyError from \"@webiny/error\";\n\nimport { SEARCH_RECORD_MODEL_ID } from \"./record.model\";\nimport { baseFields, CreateAcoStorageOperationsParams } from \"~/createAcoStorageOperations\";\nimport { getFieldValues } from \"~/utils/getFieldValues\";\n\nimport { AcoSearchRecordStorageOperations as BaseAcoSearchRecordStorageOperations } from \"./record.types\";\n\ninterface AcoSearchRecordStorageOperations extends BaseAcoSearchRecordStorageOperations {\n getRecordModel(): Promise<CmsModel>;\n}\n\nexport const createSearchRecordOperations = (\n params: CreateAcoStorageOperationsParams\n): AcoSearchRecordStorageOperations => {\n const { cms, security } = params;\n const getRecordModel = async () => {\n security.disableAuthorization();\n const model = await cms.getModel(SEARCH_RECORD_MODEL_ID);\n security.enableAuthorization();\n if (!model) {\n throw new WebinyError(\n `Could not find \"${SEARCH_RECORD_MODEL_ID}\" model.`,\n \"MODEL_NOT_FOUND_ERROR\"\n );\n }\n return model;\n };\n\n const getRecord: AcoSearchRecordStorageOperations[\"getRecord\"] = async ({ id }) => {\n const model = await getRecordModel();\n security.disableAuthorization();\n\n /**\n * The record \"id\" is generated on creation.\n * Still, we need to get/update/delete records by the original entry id.\n */\n const entry = await cms.getEntry(model, { where: { originalId: id, latest: true } });\n\n if (!entry) {\n throw new WebinyError(\"Could not load record.\", \"GET_ENTRY_ERROR\", {\n id\n });\n }\n\n security.enableAuthorization();\n return getFieldValues(entry, baseFields);\n };\n\n return {\n getRecordModel,\n getRecord,\n async listRecords(params) {\n const model = await getRecordModel();\n security.disableAuthorization();\n\n const [entries, meta] = await cms.listLatestEntries(model, {\n ...params,\n where: {\n ...(params.where || {})\n }\n });\n\n security.enableAuthorization();\n return [entries.map(entry => getFieldValues(entry, baseFields)), meta];\n },\n async createRecord({ data }) {\n const model = await getRecordModel();\n security.disableAuthorization();\n\n const entry = await cms.createEntry(model, data);\n\n security.enableAuthorization();\n return getFieldValues(entry, baseFields);\n },\n async updateRecord({ id, data }) {\n const model = await getRecordModel();\n security.disableAuthorization();\n\n const original = await getRecord({ id });\n\n const input = {\n ...original,\n ...data\n };\n\n const entry = await cms.updateEntry(model, original.id, input);\n security.enableAuthorization();\n return getFieldValues(entry, baseFields);\n },\n async deleteRecord({ id }) {\n const model = await getRecordModel();\n security.disableAuthorization();\n\n const entry = await getRecord({ id });\n\n await cms.deleteEntry(model, entry.id);\n\n security.enableAuthorization();\n return true;\n }\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["createSearchRecordOperations","params","cms","getCmsContext","withModel","createOperationsWrapper","modelName","SEARCH_RECORD_MODEL_ID","getRecord","initialModel","id","context","model","attachCmsModelFieldConverters","plugins","revisions","storageOperations","entries","getLatestByIds","ids","length","WebinyError","record","getFieldValues","baseFields","listRecords","meta","listLatestEntries","where","map","entry","createRecord","data","createEntry","updateRecord","original","input","updateEntry","deleteRecord","deleteEntry"],"sources":["record.so.ts"],"sourcesContent":["import { attachCmsModelFieldConverters } from \"@webiny/api-headless-cms/utils/converters/valueKeyStorageConverter\";\n\nimport WebinyError from \"@webiny/error\";\n\nimport { SEARCH_RECORD_MODEL_ID } from \"./record.model\";\nimport { baseFields, CreateAcoStorageOperationsParams } from \"~/createAcoStorageOperations\";\nimport { createOperationsWrapper } from \"~/utils/createOperationsWrapper\";\nimport { getFieldValues } from \"~/utils/getFieldValues\";\n\nimport { AcoSearchRecordStorageOperations } from \"./record.types\";\nimport { CmsModel } from \"@webiny/api-headless-cms/types\";\n\nexport const createSearchRecordOperations = (\n params: CreateAcoStorageOperationsParams\n): AcoSearchRecordStorageOperations => {\n const { cms, getCmsContext } = params;\n\n const { withModel } = createOperationsWrapper({\n ...params,\n modelName: SEARCH_RECORD_MODEL_ID\n });\n\n const getRecord = async (initialModel: CmsModel, id: string) => {\n const context = getCmsContext();\n\n const model = attachCmsModelFieldConverters({\n model: initialModel,\n plugins: context.plugins\n });\n\n /**\n * The record \"id\" has been passed by the original entry.\n * We need to retrieve it via `cms.storageOperations.entries.getLatestByIds()` method and return the first one.\n */\n const revisions = await cms.storageOperations.entries.getLatestByIds(model, {\n ids: [id]\n });\n\n if (revisions.length === 0) {\n throw new WebinyError(\"Record not found.\", \"NOT_FOUND\", {\n id\n });\n }\n\n return revisions[0];\n };\n\n return {\n async getRecord({ id }) {\n return withModel(async model => {\n const record = await getRecord(model, id);\n return getFieldValues(record, baseFields, true);\n });\n },\n listRecords(params) {\n return withModel(async model => {\n const [entries, meta] = await cms.listLatestEntries(model, {\n ...params,\n where: {\n ...(params.where || {})\n }\n });\n\n return [entries.map(entry => getFieldValues(entry, baseFields, true)), meta];\n });\n },\n createRecord({ data }) {\n return withModel(async model => {\n const entry = await cms.createEntry(model, data);\n\n return getFieldValues(entry, baseFields, true);\n });\n },\n updateRecord({ id, data }) {\n return withModel(async model => {\n const original = await getRecord(model, id);\n\n const input = {\n ...original,\n ...data\n };\n\n const entry = await cms.updateEntry(model, original.id, input);\n\n return getFieldValues(entry, baseFields, true);\n });\n },\n deleteRecord({ id }) {\n return withModel(async model => {\n await cms.deleteEntry(model, id);\n return true;\n });\n }\n };\n};\n"],"mappings":"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"}
@@ -7,7 +7,6 @@ export interface Location {
7
7
  folderId: string;
8
8
  }
9
9
  export interface SearchRecord<TData extends GenericSearchData = GenericSearchData> extends AcoBaseFields {
10
- originalId: string;
11
10
  type: string;
12
11
  title?: string;
13
12
  content?: string;
@@ -27,7 +26,7 @@ export interface ListSearchRecordsParams {
27
26
  limit?: number;
28
27
  after?: string | null;
29
28
  }
30
- export declare type CreateSearchRecordParams<TData> = Pick<SearchRecord<TData>, "originalId" | "title" | "content" | "type" | "location" | "data">;
29
+ export declare type CreateSearchRecordParams<TData> = Pick<SearchRecord<TData>, "id" | "title" | "content" | "type" | "location" | "data">;
31
30
  export interface UpdateSearchRecordParams<TData extends GenericSearchData> {
32
31
  title?: string;
33
32
  content?: string;
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["record.types.ts"],"sourcesContent":["import { AcoBaseFields, ListMeta } from \"~/types\";\nimport { Topic } from \"@webiny/pubsub/types\";\n\nexport type GenericSearchData = {\n [key: string]: any;\n};\n\nexport interface Location {\n folderId: string;\n}\n\nexport interface SearchRecord<TData extends GenericSearchData = GenericSearchData>\n extends AcoBaseFields {\n originalId: string;\n type: string;\n title?: string;\n content?: string;\n location?: Location;\n data?: TData;\n}\n\nexport interface ListSearchRecordsWhere {\n type: string;\n location?: {\n folderId: string;\n };\n}\n\nexport interface ListSearchRecordsParams {\n where?: ListSearchRecordsWhere;\n search?: string;\n sort?: string[];\n limit?: number;\n after?: string | null;\n}\n\nexport type CreateSearchRecordParams<TData> = Pick<\n SearchRecord<TData>,\n \"originalId\" | \"title\" | \"content\" | \"type\" | \"location\" | \"data\"\n>;\n\nexport interface UpdateSearchRecordParams<TData extends GenericSearchData> {\n title?: string;\n content?: string;\n location?: Location;\n data?: TData;\n}\n\nexport interface DeleteSearchRecordParams {\n id: string;\n}\n\nexport interface StorageOperationsGetSearchRecordParams {\n id: string;\n}\n\nexport type StorageOperationsListSearchRecordsParams = ListSearchRecordsParams;\n\nexport interface StorageOperationsCreateSearchRecordParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n data: CreateSearchRecordParams<TData>;\n}\nexport interface StorageOperationsUpdateSearchRecordParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n id: string;\n data: UpdateSearchRecordParams<TData>;\n}\nexport type StorageOperationsDeleteSearchRecordParams = DeleteSearchRecordParams;\n\nexport interface OnSearchRecordBeforeCreateTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n input: CreateSearchRecordParams<TData>;\n}\n\nexport interface OnSearchRecordAfterCreateTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n record: SearchRecord<TData>;\n}\n\nexport interface OnSearchRecordBeforeUpdateTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n original: SearchRecord<TData>;\n input: Record<string, any>;\n}\n\nexport interface OnSearchRecordAfterUpdateTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n original: SearchRecord<TData>;\n record: SearchRecord<TData>;\n input: Record<string, any>;\n}\n\nexport interface OnSearchRecordBeforeDeleteTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n record: SearchRecord<TData>;\n}\n\nexport interface OnSearchRecordAfterDeleteTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n record: SearchRecord<TData>;\n}\n\nexport interface AcoSearchRecordCrud {\n get<TData>(id: string): Promise<SearchRecord<TData>>;\n list<TData>(params: ListSearchRecordsParams): Promise<[SearchRecord<TData>[], ListMeta]>;\n create<TData>(data: CreateSearchRecordParams<TData>): Promise<SearchRecord<TData>>;\n update<TData>(id: string, data: UpdateSearchRecordParams<TData>): Promise<SearchRecord<TData>>;\n delete(id: string): Promise<Boolean>;\n onSearchRecordBeforeCreate: Topic<OnSearchRecordBeforeCreateTopicParams>;\n onSearchRecordAfterCreate: Topic<OnSearchRecordAfterCreateTopicParams>;\n onSearchRecordBeforeUpdate: Topic<OnSearchRecordBeforeUpdateTopicParams>;\n onSearchRecordAfterUpdate: Topic<OnSearchRecordAfterUpdateTopicParams>;\n onSearchRecordBeforeDelete: Topic<OnSearchRecordBeforeDeleteTopicParams>;\n onSearchRecordAfterDelete: Topic<OnSearchRecordAfterDeleteTopicParams>;\n}\nexport interface AcoSearchRecordStorageOperations {\n getRecord<TData extends GenericSearchData = GenericSearchData>(\n params: StorageOperationsGetSearchRecordParams\n ): Promise<SearchRecord<TData>>;\n listRecords<TData extends GenericSearchData = GenericSearchData>(\n params: StorageOperationsListSearchRecordsParams\n ): Promise<[SearchRecord<TData>[], ListMeta]>;\n createRecord<TData extends GenericSearchData = GenericSearchData>(\n params: StorageOperationsCreateSearchRecordParams<TData>\n ): Promise<SearchRecord<TData>>;\n updateRecord<TData extends GenericSearchData = GenericSearchData>(\n params: StorageOperationsUpdateSearchRecordParams<TData>\n ): Promise<SearchRecord<TData>>;\n deleteRecord(params: StorageOperationsDeleteSearchRecordParams): Promise<boolean>;\n}\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["record.types.ts"],"sourcesContent":["import { AcoBaseFields, ListMeta } from \"~/types\";\nimport { Topic } from \"@webiny/pubsub/types\";\n\nexport type GenericSearchData = {\n [key: string]: any;\n};\n\nexport interface Location {\n folderId: string;\n}\n\nexport interface SearchRecord<TData extends GenericSearchData = GenericSearchData>\n extends AcoBaseFields {\n type: string;\n title?: string;\n content?: string;\n location?: Location;\n data?: TData;\n}\n\nexport interface ListSearchRecordsWhere {\n type: string;\n location?: {\n folderId: string;\n };\n}\n\nexport interface ListSearchRecordsParams {\n where?: ListSearchRecordsWhere;\n search?: string;\n sort?: string[];\n limit?: number;\n after?: string | null;\n}\n\nexport type CreateSearchRecordParams<TData> = Pick<\n SearchRecord<TData>,\n \"id\" | \"title\" | \"content\" | \"type\" | \"location\" | \"data\"\n>;\n\nexport interface UpdateSearchRecordParams<TData extends GenericSearchData> {\n title?: string;\n content?: string;\n location?: Location;\n data?: TData;\n}\n\nexport interface DeleteSearchRecordParams {\n id: string;\n}\n\nexport interface StorageOperationsGetSearchRecordParams {\n id: string;\n}\n\nexport type StorageOperationsListSearchRecordsParams = ListSearchRecordsParams;\n\nexport interface StorageOperationsCreateSearchRecordParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n data: CreateSearchRecordParams<TData>;\n}\nexport interface StorageOperationsUpdateSearchRecordParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n id: string;\n data: UpdateSearchRecordParams<TData>;\n}\nexport type StorageOperationsDeleteSearchRecordParams = DeleteSearchRecordParams;\n\nexport interface OnSearchRecordBeforeCreateTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n input: CreateSearchRecordParams<TData>;\n}\n\nexport interface OnSearchRecordAfterCreateTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n record: SearchRecord<TData>;\n}\n\nexport interface OnSearchRecordBeforeUpdateTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n original: SearchRecord<TData>;\n input: Record<string, any>;\n}\n\nexport interface OnSearchRecordAfterUpdateTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n original: SearchRecord<TData>;\n record: SearchRecord<TData>;\n input: Record<string, any>;\n}\n\nexport interface OnSearchRecordBeforeDeleteTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n record: SearchRecord<TData>;\n}\n\nexport interface OnSearchRecordAfterDeleteTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n record: SearchRecord<TData>;\n}\n\nexport interface AcoSearchRecordCrud {\n get<TData>(id: string): Promise<SearchRecord<TData>>;\n list<TData>(params: ListSearchRecordsParams): Promise<[SearchRecord<TData>[], ListMeta]>;\n create<TData>(data: CreateSearchRecordParams<TData>): Promise<SearchRecord<TData>>;\n update<TData>(id: string, data: UpdateSearchRecordParams<TData>): Promise<SearchRecord<TData>>;\n delete(id: string): Promise<Boolean>;\n onSearchRecordBeforeCreate: Topic<OnSearchRecordBeforeCreateTopicParams>;\n onSearchRecordAfterCreate: Topic<OnSearchRecordAfterCreateTopicParams>;\n onSearchRecordBeforeUpdate: Topic<OnSearchRecordBeforeUpdateTopicParams>;\n onSearchRecordAfterUpdate: Topic<OnSearchRecordAfterUpdateTopicParams>;\n onSearchRecordBeforeDelete: Topic<OnSearchRecordBeforeDeleteTopicParams>;\n onSearchRecordAfterDelete: Topic<OnSearchRecordAfterDeleteTopicParams>;\n}\nexport interface AcoSearchRecordStorageOperations {\n getRecord<TData extends GenericSearchData = GenericSearchData>(\n params: StorageOperationsGetSearchRecordParams\n ): Promise<SearchRecord<TData>>;\n listRecords<TData extends GenericSearchData = GenericSearchData>(\n params: StorageOperationsListSearchRecordsParams\n ): Promise<[SearchRecord<TData>[], ListMeta]>;\n createRecord<TData extends GenericSearchData = GenericSearchData>(\n params: StorageOperationsCreateSearchRecordParams<TData>\n ): Promise<SearchRecord<TData>>;\n updateRecord<TData extends GenericSearchData = GenericSearchData>(\n params: StorageOperationsUpdateSearchRecordParams<TData>\n ): Promise<SearchRecord<TData>>;\n deleteRecord(params: StorageOperationsDeleteSearchRecordParams): Promise<boolean>;\n}\n"],"mappings":""}
@@ -0,0 +1,9 @@
1
+ import { CreateAcoStorageOperationsParams } from "../createAcoStorageOperations";
2
+ import { CmsModel } from "@webiny/api-headless-cms/types";
3
+ interface CreateOperationsWrapperParams extends CreateAcoStorageOperationsParams {
4
+ modelName: string;
5
+ }
6
+ export declare const createOperationsWrapper: (params: CreateOperationsWrapperParams) => {
7
+ withModel: <TResult>(cb: (model: CmsModel) => Promise<TResult>) => Promise<TResult>;
8
+ };
9
+ export {};
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.createOperationsWrapper = void 0;
8
+ var _error = _interopRequireDefault(require("@webiny/error"));
9
+ const createOperationsWrapper = params => {
10
+ const {
11
+ cms,
12
+ security,
13
+ modelName
14
+ } = params;
15
+ const withModel = async cb => {
16
+ security.disableAuthorization();
17
+ const model = await cms.getModel(modelName);
18
+ if (!model) {
19
+ throw new _error.default(`Could not find "${modelName}" model.`, "MODEL_NOT_FOUND_ERROR");
20
+ }
21
+ const result = await cb(model);
22
+ security.enableAuthorization();
23
+ return result;
24
+ };
25
+ return {
26
+ withModel
27
+ };
28
+ };
29
+ exports.createOperationsWrapper = createOperationsWrapper;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createOperationsWrapper","params","cms","security","modelName","withModel","cb","disableAuthorization","model","getModel","WebinyError","result","enableAuthorization"],"sources":["createOperationsWrapper.ts"],"sourcesContent":["import { CreateAcoStorageOperationsParams } from \"~/createAcoStorageOperations\";\nimport { CmsModel } from \"@webiny/api-headless-cms/types\";\nimport WebinyError from \"@webiny/error\";\n\ninterface CreateOperationsWrapperParams extends CreateAcoStorageOperationsParams {\n modelName: string;\n}\n\nexport const createOperationsWrapper = (params: CreateOperationsWrapperParams) => {\n const { cms, security, modelName } = params;\n\n const withModel = async <TResult>(\n cb: (model: CmsModel) => Promise<TResult>\n ): Promise<TResult> => {\n security.disableAuthorization();\n const model = await cms.getModel(modelName);\n\n if (!model) {\n throw new WebinyError(`Could not find \"${modelName}\" model.`, \"MODEL_NOT_FOUND_ERROR\");\n }\n\n const result = await cb(model);\n\n security.enableAuthorization();\n\n return result;\n };\n\n return {\n withModel\n };\n};\n"],"mappings":";;;;;;;AAEA;AAMO,MAAMA,uBAAuB,GAAIC,MAAqC,IAAK;EAC9E,MAAM;IAAEC,GAAG;IAAEC,QAAQ;IAAEC;EAAU,CAAC,GAAGH,MAAM;EAE3C,MAAMI,SAAS,GAAG,MACdC,EAAyC,IACtB;IACnBH,QAAQ,CAACI,oBAAoB,EAAE;IAC/B,MAAMC,KAAK,GAAG,MAAMN,GAAG,CAACO,QAAQ,CAACL,SAAS,CAAC;IAE3C,IAAI,CAACI,KAAK,EAAE;MACR,MAAM,IAAIE,cAAW,CAAE,mBAAkBN,SAAU,UAAS,EAAE,uBAAuB,CAAC;IAC1F;IAEA,MAAMO,MAAM,GAAG,MAAML,EAAE,CAACE,KAAK,CAAC;IAE9BL,QAAQ,CAACS,mBAAmB,EAAE;IAE9B,OAAOD,MAAM;EACjB,CAAC;EAED,OAAO;IACHN;EACJ,CAAC;AACL,CAAC;AAAC"}
@@ -1,2 +1,2 @@
1
1
  import { CmsEntry } from "@webiny/api-headless-cms/types";
2
- export declare function getFieldValues(entry: CmsEntry, fields: string[]): any;
2
+ export declare function getFieldValues(entry: CmsEntry, fields: string[], useEntryId?: boolean): any;
@@ -7,6 +7,13 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.getFieldValues = getFieldValues;
8
8
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
9
9
  var _pick = _interopRequireDefault(require("lodash/pick"));
10
- function getFieldValues(entry, fields) {
11
- return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _pick.default)(entry, fields)), entry.values);
10
+ var _utils = require("@webiny/utils");
11
+ function getFieldValues(entry, fields, useEntryId) {
12
+ // We return the `id` without version in case of `useEntryId` flag is passed.
13
+ const {
14
+ id
15
+ } = (0, _utils.parseIdentifier)(entry.id);
16
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _pick.default)(entry, fields)), entry.values), useEntryId && {
17
+ id
18
+ });
12
19
  }
@@ -1 +1 @@
1
- {"version":3,"names":["getFieldValues","entry","fields","pick","values"],"sources":["getFieldValues.ts"],"sourcesContent":["import pick from \"lodash/pick\";\n\nimport { CmsEntry } from \"@webiny/api-headless-cms/types\";\n\nexport function getFieldValues(entry: CmsEntry, fields: string[]): any {\n return { ...pick(entry, fields), ...entry.values };\n}\n"],"mappings":";;;;;;;;AAAA;AAIO,SAASA,cAAc,CAACC,KAAe,EAAEC,MAAgB,EAAO;EACnE,mEAAY,IAAAC,aAAI,EAACF,KAAK,EAAEC,MAAM,CAAC,GAAKD,KAAK,CAACG,MAAM;AACpD"}
1
+ {"version":3,"names":["getFieldValues","entry","fields","useEntryId","id","parseIdentifier","pick","values"],"sources":["getFieldValues.ts"],"sourcesContent":["import pick from \"lodash/pick\";\n\nimport { CmsEntry } from \"@webiny/api-headless-cms/types\";\nimport { parseIdentifier } from \"@webiny/utils\";\n\nexport function getFieldValues(entry: CmsEntry, fields: string[], useEntryId?: boolean): any {\n // We return the `id` without version in case of `useEntryId` flag is passed.\n const { id } = parseIdentifier(entry.id);\n return { ...pick(entry, fields), ...entry.values, ...(useEntryId && { id }) };\n}\n"],"mappings":";;;;;;;;AAAA;AAGA;AAEO,SAASA,cAAc,CAACC,KAAe,EAAEC,MAAgB,EAAEC,UAAoB,EAAO;EACzF;EACA,MAAM;IAAEC;EAAG,CAAC,GAAG,IAAAC,sBAAe,EAACJ,KAAK,CAACG,EAAE,CAAC;EACxC,+FAAY,IAAAE,aAAI,EAACL,KAAK,EAAEC,MAAM,CAAC,GAAKD,KAAK,CAACM,MAAM,GAAMJ,UAAU,IAAI;IAAEC;EAAG,CAAC;AAC9E"}