@webiny/api-aco 0.0.0-unstable.3386f66516 → 0.0.0-unstable.496cf268ac
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -0
- package/context/folders.js +22 -22
- package/context/folders.js.map +1 -1
- package/context/links.js +18 -14
- package/context/links.js.map +1 -1
- package/createAcoContext.d.ts +3 -0
- package/createAcoContext.js +63 -0
- package/createAcoContext.js.map +1 -0
- package/createAcoCrud.d.ts +2 -0
- package/createAcoCrud.js +17 -0
- package/createAcoCrud.js.map +1 -0
- package/createAcoFields.d.ts +2 -0
- package/createAcoFields.js +40 -0
- package/createAcoFields.js.map +1 -0
- package/createAcoGraphQL.d.ts +3 -0
- package/createAcoGraphQL.js +92 -0
- package/createAcoGraphQL.js.map +1 -0
- package/createAcoHooks.d.ts +2 -0
- package/createAcoHooks.js +11 -0
- package/createAcoHooks.js.map +1 -0
- package/createAcoModels.d.ts +2 -0
- package/createAcoModels.js +67 -0
- package/createAcoModels.js.map +1 -0
- package/createAcoStorageOperations.d.ts +10 -0
- package/createAcoStorageOperations.js +19 -0
- package/createAcoStorageOperations.js.map +1 -0
- package/folder/folder.crud.d.ts +3 -0
- package/folder/folder.crud.js +92 -0
- package/folder/folder.crud.js.map +1 -0
- package/folder/folder.gql.d.ts +3 -0
- package/folder/folder.gql.js +103 -0
- package/folder/folder.gql.js.map +1 -0
- package/folder/folder.model.d.ts +6 -0
- package/folder/folder.model.js +79 -0
- package/folder/folder.model.js.map +1 -0
- package/folder/folder.so.d.ts +3 -0
- package/folder/folder.so.js +151 -0
- package/folder/folder.so.js.map +1 -0
- package/folder/folder.types.d.ts +83 -0
- package/folder/folder.types.js +5 -0
- package/folder/folder.types.js.map +1 -0
- package/folder/onFolderBeforeDelete.hook.d.ts +2 -0
- package/folder/onFolderBeforeDelete.hook.js +53 -0
- package/folder/onFolderBeforeDelete.hook.js.map +1 -0
- package/index.d.ts +1 -10
- package/index.js +7 -68
- package/index.js.map +1 -1
- package/package.json +23 -22
- package/record/record.crud.d.ts +3 -0
- package/record/record.crud.js +92 -0
- package/record/record.crud.js.map +1 -0
- package/record/record.gql.d.ts +3 -0
- package/record/record.gql.js +117 -0
- package/record/record.gql.js.map +1 -0
- package/record/record.model.d.ts +6 -0
- package/record/record.model.js +63 -0
- package/record/record.model.js.map +1 -0
- package/record/record.so.d.ts +3 -0
- package/record/record.so.js +98 -0
- package/record/record.so.js.map +1 -0
- package/record/record.types.d.ts +91 -0
- package/record/record.types.js +5 -0
- package/record/record.types.js.map +1 -0
- package/subscriptions/index.d.ts +1 -2
- package/subscriptions/index.js +4 -12
- package/subscriptions/index.js.map +1 -1
- package/types.d.ts +24 -202
- package/types.js +8 -1
- package/types.js.map +1 -1
- package/utils/createListSort.d.ts +2 -0
- package/utils/createListSort.js +13 -0
- package/utils/createListSort.js.map +1 -0
- package/utils/createModelField.d.ts +6 -0
- package/utils/createModelField.js +39 -0
- package/utils/createModelField.js.map +1 -0
- package/utils/createOperationsWrapper.d.ts +9 -0
- package/utils/createOperationsWrapper.js +29 -0
- package/utils/createOperationsWrapper.js.map +1 -0
- package/utils/fieldResolver.d.ts +16 -0
- package/utils/fieldResolver.js +44 -0
- package/utils/fieldResolver.js.map +1 -0
- package/utils/getFieldValues.d.ts +2 -0
- package/utils/getFieldValues.js +19 -0
- package/utils/getFieldValues.js.map +1 -0
- package/utils/isInstallationPending.d.ts +4 -0
- package/utils/isInstallationPending.js +21 -0
- package/utils/isInstallationPending.js.map +1 -0
- package/utils/modelFactory.d.ts +17 -0
- package/utils/modelFactory.js +23 -0
- package/utils/modelFactory.js.map +1 -0
- package/utils/resolve.d.ts +2 -0
- package/utils/resolve.js +15 -0
- package/utils/resolve.js.map +1 -0
- package/subscriptions/aftePageCreate.d.ts +0 -3
- package/subscriptions/aftePageCreate.js +0 -45
- package/subscriptions/aftePageCreate.js.map +0 -1
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.createAcoModels = void 0;
|
|
8
|
+
var _apiHeadlessCms = require("@webiny/api-headless-cms");
|
|
9
|
+
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
10
|
+
var _folder = require("./folder/folder.model");
|
|
11
|
+
var _record = require("./record/record.model");
|
|
12
|
+
var _modelFactory = require("./utils/modelFactory");
|
|
13
|
+
var _isInstallationPending = require("./utils/isInstallationPending");
|
|
14
|
+
const createAcoModels = context => {
|
|
15
|
+
/**
|
|
16
|
+
* This should never happen in the actual project.
|
|
17
|
+
* It is to make sure that we load setup context before the CRUD init in our internal code.
|
|
18
|
+
*/
|
|
19
|
+
if (!context.cms) {
|
|
20
|
+
console.warn("Creating model before cms init.");
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
if ((0, _isInstallationPending.isInstallationPending)({
|
|
24
|
+
tenancy: context.tenancy,
|
|
25
|
+
i18n: context.i18n
|
|
26
|
+
})) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
context.security.disableAuthorization();
|
|
30
|
+
const locale = context.i18n.getContentLocale();
|
|
31
|
+
if (!locale) {
|
|
32
|
+
throw new _error.default("Missing content locale in api-aco/storageOperations/index.ts", "LOCALE_ERROR");
|
|
33
|
+
}
|
|
34
|
+
const groupId = "contentModelGroup_aco";
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Create a CmsGroup.
|
|
38
|
+
*/
|
|
39
|
+
const cmsGroupPlugin = new _apiHeadlessCms.CmsGroupPlugin({
|
|
40
|
+
id: groupId,
|
|
41
|
+
slug: "aco",
|
|
42
|
+
name: "ACO",
|
|
43
|
+
description: "Group for Advanced Content Organisation and Search",
|
|
44
|
+
icon: "fas/folder",
|
|
45
|
+
isPrivate: true
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Create CmsModel plugins.
|
|
50
|
+
*/
|
|
51
|
+
const modelDefinitions = [(0, _folder.createFolderModelDefinition)(), (0, _record.createSearchModelDefinition)()];
|
|
52
|
+
const cmsModelPlugins = modelDefinitions.map(modelDefinition => {
|
|
53
|
+
return (0, _modelFactory.modelFactory)({
|
|
54
|
+
group: cmsGroupPlugin.contentModelGroup,
|
|
55
|
+
tenant: context.tenancy.getCurrentTenant().id,
|
|
56
|
+
locale: locale.code,
|
|
57
|
+
modelDefinition
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Register them so that they are accessible in cms context
|
|
63
|
+
*/
|
|
64
|
+
context.plugins.register([cmsGroupPlugin, cmsModelPlugins]);
|
|
65
|
+
context.security.enableAuthorization();
|
|
66
|
+
};
|
|
67
|
+
exports.createAcoModels = createAcoModels;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createAcoModels","context","cms","console","warn","isInstallationPending","tenancy","i18n","security","disableAuthorization","locale","getContentLocale","WebinyError","groupId","cmsGroupPlugin","CmsGroupPlugin","id","slug","name","description","icon","isPrivate","modelDefinitions","createFolderModelDefinition","createSearchModelDefinition","cmsModelPlugins","map","modelDefinition","modelFactory","group","contentModelGroup","tenant","getCurrentTenant","code","plugins","register","enableAuthorization"],"sources":["createAcoModels.ts"],"sourcesContent":["import { CmsGroupPlugin } from \"@webiny/api-headless-cms\";\nimport { CmsContext } from \"@webiny/api-headless-cms/types\";\nimport WebinyError from \"@webiny/error\";\n\nimport { createFolderModelDefinition } from \"~/folder/folder.model\";\nimport { createSearchModelDefinition } from \"~/record/record.model\";\nimport { modelFactory } from \"~/utils/modelFactory\";\nimport { isInstallationPending } from \"~/utils/isInstallationPending\";\n\nexport const createAcoModels = (context: CmsContext) => {\n /**\n * This should never happen in the actual project.\n * It is to make sure that we load setup context before the CRUD init in our internal code.\n */\n if (!context.cms) {\n console.warn(\"Creating model before cms init.\");\n return;\n }\n\n if (isInstallationPending({ tenancy: context.tenancy, i18n: context.i18n })) {\n return;\n }\n\n context.security.disableAuthorization();\n\n const locale = context.i18n.getContentLocale();\n if (!locale) {\n throw new WebinyError(\n \"Missing content locale in api-aco/storageOperations/index.ts\",\n \"LOCALE_ERROR\"\n );\n }\n\n const groupId = \"contentModelGroup_aco\";\n\n /**\n * Create a CmsGroup.\n */\n const cmsGroupPlugin = new CmsGroupPlugin({\n id: groupId,\n slug: \"aco\",\n name: \"ACO\",\n description: \"Group for Advanced Content Organisation and Search\",\n icon: \"fas/folder\",\n isPrivate: true\n });\n\n /**\n * Create CmsModel plugins.\n */\n const modelDefinitions = [createFolderModelDefinition(), createSearchModelDefinition()];\n const cmsModelPlugins = modelDefinitions.map(modelDefinition => {\n return modelFactory({\n group: cmsGroupPlugin.contentModelGroup,\n tenant: context.tenancy.getCurrentTenant().id,\n locale: locale.code,\n modelDefinition\n });\n });\n\n /**\n * Register them so that they are accessible in cms context\n */\n context.plugins.register([cmsGroupPlugin, cmsModelPlugins]);\n\n context.security.enableAuthorization();\n};\n"],"mappings":";;;;;;;AAAA;AAEA;AAEA;AACA;AACA;AACA;AAEO,MAAMA,eAAe,GAAIC,OAAmB,IAAK;EACpD;AACJ;AACA;AACA;EACI,IAAI,CAACA,OAAO,CAACC,GAAG,EAAE;IACdC,OAAO,CAACC,IAAI,CAAC,iCAAiC,CAAC;IAC/C;EACJ;EAEA,IAAI,IAAAC,4CAAqB,EAAC;IAAEC,OAAO,EAAEL,OAAO,CAACK,OAAO;IAAEC,IAAI,EAAEN,OAAO,CAACM;EAAK,CAAC,CAAC,EAAE;IACzE;EACJ;EAEAN,OAAO,CAACO,QAAQ,CAACC,oBAAoB,EAAE;EAEvC,MAAMC,MAAM,GAAGT,OAAO,CAACM,IAAI,CAACI,gBAAgB,EAAE;EAC9C,IAAI,CAACD,MAAM,EAAE;IACT,MAAM,IAAIE,cAAW,CACjB,8DAA8D,EAC9D,cAAc,CACjB;EACL;EAEA,MAAMC,OAAO,GAAG,uBAAuB;;EAEvC;AACJ;AACA;EACI,MAAMC,cAAc,GAAG,IAAIC,8BAAc,CAAC;IACtCC,EAAE,EAAEH,OAAO;IACXI,IAAI,EAAE,KAAK;IACXC,IAAI,EAAE,KAAK;IACXC,WAAW,EAAE,oDAAoD;IACjEC,IAAI,EAAE,YAAY;IAClBC,SAAS,EAAE;EACf,CAAC,CAAC;;EAEF;AACJ;AACA;EACI,MAAMC,gBAAgB,GAAG,CAAC,IAAAC,mCAA2B,GAAE,EAAE,IAAAC,mCAA2B,GAAE,CAAC;EACvF,MAAMC,eAAe,GAAGH,gBAAgB,CAACI,GAAG,CAACC,eAAe,IAAI;IAC5D,OAAO,IAAAC,0BAAY,EAAC;MAChBC,KAAK,EAAEf,cAAc,CAACgB,iBAAiB;MACvCC,MAAM,EAAE9B,OAAO,CAACK,OAAO,CAAC0B,gBAAgB,EAAE,CAAChB,EAAE;MAC7CN,MAAM,EAAEA,MAAM,CAACuB,IAAI;MACnBN;IACJ,CAAC,CAAC;EACN,CAAC,CAAC;;EAEF;AACJ;AACA;EACI1B,OAAO,CAACiC,OAAO,CAACC,QAAQ,CAAC,CAACrB,cAAc,EAAEW,eAAe,CAAC,CAAC;EAE3DxB,OAAO,CAACO,QAAQ,CAAC4B,mBAAmB,EAAE;AAC1C,CAAC;AAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { CmsContext, HeadlessCms } from "@webiny/api-headless-cms/types";
|
|
2
|
+
import { Security } from "@webiny/api-security/types";
|
|
3
|
+
import { AcoStorageOperations } from "./types";
|
|
4
|
+
export interface CreateAcoStorageOperationsParams {
|
|
5
|
+
cms: HeadlessCms;
|
|
6
|
+
security: Security;
|
|
7
|
+
getCmsContext: () => CmsContext;
|
|
8
|
+
}
|
|
9
|
+
export declare const baseFields: string[];
|
|
10
|
+
export declare const createAcoStorageOperations: (params: CreateAcoStorageOperationsParams) => AcoStorageOperations;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.createAcoStorageOperations = exports.baseFields = void 0;
|
|
8
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
9
|
+
var _folder = require("./folder/folder.so");
|
|
10
|
+
var _record = require("./record/record.so");
|
|
11
|
+
var _createAcoModels = require("./createAcoModels");
|
|
12
|
+
const baseFields = ["id", "entryId", "createdBy", "createdOn", "savedOn"];
|
|
13
|
+
exports.baseFields = baseFields;
|
|
14
|
+
const createAcoStorageOperations = params => {
|
|
15
|
+
const context = params.getCmsContext();
|
|
16
|
+
(0, _createAcoModels.createAcoModels)(context);
|
|
17
|
+
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _folder.createFolderOperations)(params)), (0, _record.createSearchRecordOperations)(params));
|
|
18
|
+
};
|
|
19
|
+
exports.createAcoStorageOperations = createAcoStorageOperations;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["baseFields","createAcoStorageOperations","params","context","getCmsContext","createAcoModels","createFolderOperations","createSearchRecordOperations"],"sources":["createAcoStorageOperations.ts"],"sourcesContent":["import { CmsContext, HeadlessCms } from \"@webiny/api-headless-cms/types\";\nimport { Security } from \"@webiny/api-security/types\";\n\nimport { createFolderOperations } from \"~/folder/folder.so\";\nimport { createSearchRecordOperations } from \"~/record/record.so\";\nimport { createAcoModels } from \"~/createAcoModels\";\n\nimport { AcoStorageOperations } from \"~/types\";\n\nexport interface CreateAcoStorageOperationsParams {\n cms: HeadlessCms;\n security: Security;\n getCmsContext: () => CmsContext;\n}\n\nexport const baseFields = [\"id\", \"entryId\", \"createdBy\", \"createdOn\", \"savedOn\"];\n\nexport const createAcoStorageOperations = (\n params: CreateAcoStorageOperationsParams\n): AcoStorageOperations => {\n const context = params.getCmsContext();\n\n createAcoModels(context);\n\n return {\n ...createFolderOperations(params),\n ...createSearchRecordOperations(params)\n };\n};\n"],"mappings":";;;;;;;;AAGA;AACA;AACA;AAUO,MAAMA,UAAU,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,CAAC;AAAC;AAE1E,MAAMC,0BAA0B,GACnCC,MAAwC,IACjB;EACvB,MAAMC,OAAO,GAAGD,MAAM,CAACE,aAAa,EAAE;EAEtC,IAAAC,gCAAe,EAACF,OAAO,CAAC;EAExB,mEACO,IAAAG,8BAAsB,EAACJ,MAAM,CAAC,GAC9B,IAAAK,oCAA4B,EAACL,MAAM,CAAC;AAE/C,CAAC;AAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createFolderCrudMethods = void 0;
|
|
7
|
+
var _pubsub = require("@webiny/pubsub");
|
|
8
|
+
const createFolderCrudMethods = ({
|
|
9
|
+
storageOperations
|
|
10
|
+
}) => {
|
|
11
|
+
// create
|
|
12
|
+
const onFolderBeforeCreate = (0, _pubsub.createTopic)("aco.onFolderBeforeCreate");
|
|
13
|
+
const onFolderAfterCreate = (0, _pubsub.createTopic)("aco.onFolderAfterCreate");
|
|
14
|
+
// update
|
|
15
|
+
const onFolderBeforeUpdate = (0, _pubsub.createTopic)("aco.onFolderBeforeUpdate");
|
|
16
|
+
const onFolderAfterUpdate = (0, _pubsub.createTopic)("aco.onFolderAfterUpdate");
|
|
17
|
+
// delete
|
|
18
|
+
const onFolderBeforeDelete = (0, _pubsub.createTopic)("aco.onFolderBeforeDelete");
|
|
19
|
+
const onFolderAfterDelete = (0, _pubsub.createTopic)("aco.onFolderAfterDelete");
|
|
20
|
+
return {
|
|
21
|
+
/**
|
|
22
|
+
* Lifecycle events
|
|
23
|
+
*/
|
|
24
|
+
onFolderBeforeCreate,
|
|
25
|
+
onFolderAfterCreate,
|
|
26
|
+
onFolderBeforeUpdate,
|
|
27
|
+
onFolderAfterUpdate,
|
|
28
|
+
onFolderBeforeDelete,
|
|
29
|
+
onFolderAfterDelete,
|
|
30
|
+
async get(id) {
|
|
31
|
+
return storageOperations.getFolder({
|
|
32
|
+
id
|
|
33
|
+
});
|
|
34
|
+
},
|
|
35
|
+
async list(params) {
|
|
36
|
+
return storageOperations.listFolders(params);
|
|
37
|
+
},
|
|
38
|
+
async create(data) {
|
|
39
|
+
await onFolderBeforeCreate.publish({
|
|
40
|
+
input: data
|
|
41
|
+
});
|
|
42
|
+
const folder = await storageOperations.createFolder({
|
|
43
|
+
data
|
|
44
|
+
});
|
|
45
|
+
await onFolderAfterCreate.publish({
|
|
46
|
+
folder
|
|
47
|
+
});
|
|
48
|
+
return folder;
|
|
49
|
+
},
|
|
50
|
+
async update(id, data) {
|
|
51
|
+
const original = await storageOperations.getFolder({
|
|
52
|
+
id
|
|
53
|
+
});
|
|
54
|
+
await onFolderBeforeUpdate.publish({
|
|
55
|
+
original,
|
|
56
|
+
input: {
|
|
57
|
+
id,
|
|
58
|
+
data
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
const folder = await storageOperations.updateFolder({
|
|
62
|
+
id,
|
|
63
|
+
data
|
|
64
|
+
});
|
|
65
|
+
await onFolderAfterUpdate.publish({
|
|
66
|
+
original,
|
|
67
|
+
input: {
|
|
68
|
+
id,
|
|
69
|
+
data
|
|
70
|
+
},
|
|
71
|
+
folder
|
|
72
|
+
});
|
|
73
|
+
return folder;
|
|
74
|
+
},
|
|
75
|
+
async delete(id) {
|
|
76
|
+
const folder = await storageOperations.getFolder({
|
|
77
|
+
id
|
|
78
|
+
});
|
|
79
|
+
await onFolderBeforeDelete.publish({
|
|
80
|
+
folder
|
|
81
|
+
});
|
|
82
|
+
await storageOperations.deleteFolder({
|
|
83
|
+
id
|
|
84
|
+
});
|
|
85
|
+
await onFolderAfterDelete.publish({
|
|
86
|
+
folder
|
|
87
|
+
});
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
};
|
|
92
|
+
exports.createFolderCrudMethods = createFolderCrudMethods;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createFolderCrudMethods","storageOperations","onFolderBeforeCreate","createTopic","onFolderAfterCreate","onFolderBeforeUpdate","onFolderAfterUpdate","onFolderBeforeDelete","onFolderAfterDelete","get","id","getFolder","list","params","listFolders","create","data","publish","input","folder","createFolder","update","original","updateFolder","delete","deleteFolder"],"sources":["folder.crud.ts"],"sourcesContent":["import { createTopic } from \"@webiny/pubsub\";\n\nimport { CreateAcoParams } from \"~/types\";\nimport {\n AcoFolderCrud,\n OnFolderAfterCreateTopicParams,\n OnFolderAfterDeleteTopicParams,\n OnFolderAfterUpdateTopicParams,\n OnFolderBeforeCreateTopicParams,\n OnFolderBeforeDeleteTopicParams,\n OnFolderBeforeUpdateTopicParams\n} from \"./folder.types\";\n\nexport const createFolderCrudMethods = ({ storageOperations }: CreateAcoParams): AcoFolderCrud => {\n // create\n const onFolderBeforeCreate = createTopic<OnFolderBeforeCreateTopicParams>(\n \"aco.onFolderBeforeCreate\"\n );\n const onFolderAfterCreate =\n createTopic<OnFolderAfterCreateTopicParams>(\"aco.onFolderAfterCreate\");\n // update\n const onFolderBeforeUpdate = createTopic<OnFolderBeforeUpdateTopicParams>(\n \"aco.onFolderBeforeUpdate\"\n );\n const onFolderAfterUpdate =\n createTopic<OnFolderAfterUpdateTopicParams>(\"aco.onFolderAfterUpdate\");\n // delete\n const onFolderBeforeDelete = createTopic<OnFolderBeforeDeleteTopicParams>(\n \"aco.onFolderBeforeDelete\"\n );\n const onFolderAfterDelete =\n createTopic<OnFolderAfterDeleteTopicParams>(\"aco.onFolderAfterDelete\");\n\n return {\n /**\n * Lifecycle events\n */\n onFolderBeforeCreate,\n onFolderAfterCreate,\n onFolderBeforeUpdate,\n onFolderAfterUpdate,\n onFolderBeforeDelete,\n onFolderAfterDelete,\n async get(id) {\n return storageOperations.getFolder({ id });\n },\n async list(params) {\n return storageOperations.listFolders(params);\n },\n async create(data) {\n await onFolderBeforeCreate.publish({ input: data });\n const folder = await storageOperations.createFolder({ data });\n await onFolderAfterCreate.publish({ folder });\n return folder;\n },\n async update(id, data) {\n const original = await storageOperations.getFolder({ id });\n await onFolderBeforeUpdate.publish({ original, input: { id, data } });\n const folder = await storageOperations.updateFolder({ id, data });\n await onFolderAfterUpdate.publish({ original, input: { id, data }, folder });\n return folder;\n },\n async delete(id: string) {\n const folder = await storageOperations.getFolder({ id });\n await onFolderBeforeDelete.publish({ folder });\n await storageOperations.deleteFolder({ id });\n await onFolderAfterDelete.publish({ folder });\n return true;\n }\n };\n};\n"],"mappings":";;;;;;AAAA;AAaO,MAAMA,uBAAuB,GAAG,CAAC;EAAEC;AAAmC,CAAC,KAAoB;EAC9F;EACA,MAAMC,oBAAoB,GAAG,IAAAC,mBAAW,EACpC,0BAA0B,CAC7B;EACD,MAAMC,mBAAmB,GACrB,IAAAD,mBAAW,EAAiC,yBAAyB,CAAC;EAC1E;EACA,MAAME,oBAAoB,GAAG,IAAAF,mBAAW,EACpC,0BAA0B,CAC7B;EACD,MAAMG,mBAAmB,GACrB,IAAAH,mBAAW,EAAiC,yBAAyB,CAAC;EAC1E;EACA,MAAMI,oBAAoB,GAAG,IAAAJ,mBAAW,EACpC,0BAA0B,CAC7B;EACD,MAAMK,mBAAmB,GACrB,IAAAL,mBAAW,EAAiC,yBAAyB,CAAC;EAE1E,OAAO;IACH;AACR;AACA;IACQD,oBAAoB;IACpBE,mBAAmB;IACnBC,oBAAoB;IACpBC,mBAAmB;IACnBC,oBAAoB;IACpBC,mBAAmB;IACnB,MAAMC,GAAG,CAACC,EAAE,EAAE;MACV,OAAOT,iBAAiB,CAACU,SAAS,CAAC;QAAED;MAAG,CAAC,CAAC;IAC9C,CAAC;IACD,MAAME,IAAI,CAACC,MAAM,EAAE;MACf,OAAOZ,iBAAiB,CAACa,WAAW,CAACD,MAAM,CAAC;IAChD,CAAC;IACD,MAAME,MAAM,CAACC,IAAI,EAAE;MACf,MAAMd,oBAAoB,CAACe,OAAO,CAAC;QAAEC,KAAK,EAAEF;MAAK,CAAC,CAAC;MACnD,MAAMG,MAAM,GAAG,MAAMlB,iBAAiB,CAACmB,YAAY,CAAC;QAAEJ;MAAK,CAAC,CAAC;MAC7D,MAAMZ,mBAAmB,CAACa,OAAO,CAAC;QAAEE;MAAO,CAAC,CAAC;MAC7C,OAAOA,MAAM;IACjB,CAAC;IACD,MAAME,MAAM,CAACX,EAAE,EAAEM,IAAI,EAAE;MACnB,MAAMM,QAAQ,GAAG,MAAMrB,iBAAiB,CAACU,SAAS,CAAC;QAAED;MAAG,CAAC,CAAC;MAC1D,MAAML,oBAAoB,CAACY,OAAO,CAAC;QAAEK,QAAQ;QAAEJ,KAAK,EAAE;UAAER,EAAE;UAAEM;QAAK;MAAE,CAAC,CAAC;MACrE,MAAMG,MAAM,GAAG,MAAMlB,iBAAiB,CAACsB,YAAY,CAAC;QAAEb,EAAE;QAAEM;MAAK,CAAC,CAAC;MACjE,MAAMV,mBAAmB,CAACW,OAAO,CAAC;QAAEK,QAAQ;QAAEJ,KAAK,EAAE;UAAER,EAAE;UAAEM;QAAK,CAAC;QAAEG;MAAO,CAAC,CAAC;MAC5E,OAAOA,MAAM;IACjB,CAAC;IACD,MAAMK,MAAM,CAACd,EAAU,EAAE;MACrB,MAAMS,MAAM,GAAG,MAAMlB,iBAAiB,CAACU,SAAS,CAAC;QAAED;MAAG,CAAC,CAAC;MACxD,MAAMH,oBAAoB,CAACU,OAAO,CAAC;QAAEE;MAAO,CAAC,CAAC;MAC9C,MAAMlB,iBAAiB,CAACwB,YAAY,CAAC;QAAEf;MAAG,CAAC,CAAC;MAC5C,MAAMF,mBAAmB,CAACS,OAAO,CAAC;QAAEE;MAAO,CAAC,CAAC;MAC7C,OAAO,IAAI;IACf;EACJ,CAAC;AACL,CAAC;AAAC"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.folderSchema = void 0;
|
|
7
|
+
var _responses = require("@webiny/handler-graphql/responses");
|
|
8
|
+
var _GraphQLSchemaPlugin = require("@webiny/handler-graphql/plugins/GraphQLSchemaPlugin");
|
|
9
|
+
var _resolve = require("../utils/resolve");
|
|
10
|
+
const folderSchema = new _GraphQLSchemaPlugin.GraphQLSchemaPlugin({
|
|
11
|
+
typeDefs: /* GraphQL */`
|
|
12
|
+
type Folder {
|
|
13
|
+
id: ID!
|
|
14
|
+
title: String!
|
|
15
|
+
slug: String!
|
|
16
|
+
type: String!
|
|
17
|
+
parentId: ID
|
|
18
|
+
savedOn: DateTime
|
|
19
|
+
createdOn: DateTime
|
|
20
|
+
createdBy: AcoUser
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
input FolderCreateInput {
|
|
24
|
+
title: String!
|
|
25
|
+
slug: String!
|
|
26
|
+
type: String!
|
|
27
|
+
parentId: ID
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
input FolderUpdateInput {
|
|
31
|
+
title: String
|
|
32
|
+
slug: String
|
|
33
|
+
parentId: ID
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
input FoldersListWhereInput {
|
|
37
|
+
type: String!
|
|
38
|
+
parentId: String
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
type FolderResponse {
|
|
42
|
+
data: Folder
|
|
43
|
+
error: AcoError
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
type FoldersListResponse {
|
|
47
|
+
data: [Folder]
|
|
48
|
+
error: AcoError
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
extend type AcoQuery {
|
|
52
|
+
getFolder(id: ID!): FolderResponse
|
|
53
|
+
listFolders(
|
|
54
|
+
where: FoldersListWhereInput!
|
|
55
|
+
limit: Int
|
|
56
|
+
after: String
|
|
57
|
+
sort: AcoSort
|
|
58
|
+
): FoldersListResponse
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
extend type AcoMutation {
|
|
62
|
+
createFolder(data: FolderCreateInput!): FolderResponse
|
|
63
|
+
updateFolder(id: ID!, data: FolderUpdateInput!): FolderResponse
|
|
64
|
+
deleteFolder(id: ID!): AcoBooleanResponse
|
|
65
|
+
}
|
|
66
|
+
`,
|
|
67
|
+
resolvers: {
|
|
68
|
+
AcoQuery: {
|
|
69
|
+
getFolder: async (_, {
|
|
70
|
+
id
|
|
71
|
+
}, context) => {
|
|
72
|
+
return (0, _resolve.resolve)(() => context.aco.folder.get(id));
|
|
73
|
+
},
|
|
74
|
+
listFolders: async (_, args, context) => {
|
|
75
|
+
try {
|
|
76
|
+
const [entries, meta] = await context.aco.folder.list(args);
|
|
77
|
+
return new _responses.ListResponse(entries, meta);
|
|
78
|
+
} catch (e) {
|
|
79
|
+
return new _responses.ErrorResponse(e);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
AcoMutation: {
|
|
84
|
+
createFolder: async (_, {
|
|
85
|
+
data
|
|
86
|
+
}, context) => {
|
|
87
|
+
return (0, _resolve.resolve)(() => context.aco.folder.create(data));
|
|
88
|
+
},
|
|
89
|
+
updateFolder: async (_, {
|
|
90
|
+
id,
|
|
91
|
+
data
|
|
92
|
+
}, context) => {
|
|
93
|
+
return (0, _resolve.resolve)(() => context.aco.folder.update(id, data));
|
|
94
|
+
},
|
|
95
|
+
deleteFolder: async (_, {
|
|
96
|
+
id
|
|
97
|
+
}, context) => {
|
|
98
|
+
return (0, _resolve.resolve)(() => context.aco.folder.delete(id));
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
exports.folderSchema = folderSchema;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["folderSchema","GraphQLSchemaPlugin","typeDefs","resolvers","AcoQuery","getFolder","_","id","context","resolve","aco","folder","get","listFolders","args","entries","meta","list","ListResponse","e","ErrorResponse","AcoMutation","createFolder","data","create","updateFolder","update","deleteFolder","delete"],"sources":["folder.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 folderSchema = new GraphQLSchemaPlugin<AcoContext>({\n typeDefs: /* GraphQL */ `\n type Folder {\n id: ID!\n title: String!\n slug: String!\n type: String!\n parentId: ID\n savedOn: DateTime\n createdOn: DateTime\n createdBy: AcoUser\n }\n\n input FolderCreateInput {\n title: String!\n slug: String!\n type: String!\n parentId: ID\n }\n\n input FolderUpdateInput {\n title: String\n slug: String\n parentId: ID\n }\n\n input FoldersListWhereInput {\n type: String!\n parentId: String\n }\n\n type FolderResponse {\n data: Folder\n error: AcoError\n }\n\n type FoldersListResponse {\n data: [Folder]\n error: AcoError\n }\n\n extend type AcoQuery {\n getFolder(id: ID!): FolderResponse\n listFolders(\n where: FoldersListWhereInput!\n limit: Int\n after: String\n sort: AcoSort\n ): FoldersListResponse\n }\n\n extend type AcoMutation {\n createFolder(data: FolderCreateInput!): FolderResponse\n updateFolder(id: ID!, data: FolderUpdateInput!): FolderResponse\n deleteFolder(id: ID!): AcoBooleanResponse\n }\n `,\n resolvers: {\n AcoQuery: {\n getFolder: async (_, { id }, context) => {\n return resolve(() => context.aco.folder.get(id));\n },\n listFolders: async (_, args: any, context) => {\n try {\n const [entries, meta] = await context.aco.folder.list(args);\n return new ListResponse(entries, meta);\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n },\n AcoMutation: {\n createFolder: async (_, { data }, context) => {\n return resolve(() => context.aco.folder.create(data));\n },\n updateFolder: async (_, { id, data }, context) => {\n return resolve(() => context.aco.folder.update(id, data));\n },\n deleteFolder: async (_, { id }, context) => {\n return resolve(() => context.aco.folder.delete(id));\n }\n }\n }\n});\n"],"mappings":";;;;;;AAAA;AACA;AAEA;AAIO,MAAMA,YAAY,GAAG,IAAIC,wCAAmB,CAAa;EAC5DC,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,KAAK;EACDC,SAAS,EAAE;IACPC,QAAQ,EAAE;MACNC,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,WAAW,EAAE;MACTC,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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { CmsModel } from "@webiny/api-headless-cms/types";
|
|
2
|
+
export declare type FolderModelDefinition = Pick<CmsModel, "name" | "modelId" | "layout" | "titleFieldId" | "description" | "fields" | "isPrivate"> & {
|
|
3
|
+
isPrivate: true;
|
|
4
|
+
};
|
|
5
|
+
export declare const FOLDER_MODEL_ID = "acoFolder";
|
|
6
|
+
export declare const createFolderModelDefinition: () => FolderModelDefinition;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createFolderModelDefinition = exports.FOLDER_MODEL_ID = void 0;
|
|
7
|
+
var _createModelField = require("../utils/createModelField");
|
|
8
|
+
const titleField = () => (0, _createModelField.createModelField)({
|
|
9
|
+
label: "Title",
|
|
10
|
+
type: "text",
|
|
11
|
+
parent: "folder",
|
|
12
|
+
validation: [{
|
|
13
|
+
name: "required",
|
|
14
|
+
message: "Value is required."
|
|
15
|
+
}, {
|
|
16
|
+
name: "minLength",
|
|
17
|
+
settings: {
|
|
18
|
+
value: "3"
|
|
19
|
+
},
|
|
20
|
+
message: "Value is too short."
|
|
21
|
+
}]
|
|
22
|
+
});
|
|
23
|
+
const slugField = () => (0, _createModelField.createModelField)({
|
|
24
|
+
label: "Slug",
|
|
25
|
+
type: "text",
|
|
26
|
+
parent: "folder",
|
|
27
|
+
validation: [{
|
|
28
|
+
name: "required",
|
|
29
|
+
message: "Value is required."
|
|
30
|
+
}, {
|
|
31
|
+
name: "minLength",
|
|
32
|
+
settings: {
|
|
33
|
+
value: "3"
|
|
34
|
+
},
|
|
35
|
+
message: "Value is too short."
|
|
36
|
+
}, {
|
|
37
|
+
name: "maxLength",
|
|
38
|
+
settings: {
|
|
39
|
+
value: "100"
|
|
40
|
+
},
|
|
41
|
+
message: "Value is too long."
|
|
42
|
+
}, {
|
|
43
|
+
name: "pattern",
|
|
44
|
+
settings: {
|
|
45
|
+
preset: "custom",
|
|
46
|
+
regex: "^[a-z0-9]+(-[a-z0-9]+)*$",
|
|
47
|
+
flags: "g"
|
|
48
|
+
},
|
|
49
|
+
message: "Value must consist of only 'a-z', '0-9' and '-'."
|
|
50
|
+
}]
|
|
51
|
+
});
|
|
52
|
+
const typeField = () => (0, _createModelField.createModelField)({
|
|
53
|
+
label: "Type",
|
|
54
|
+
type: "text",
|
|
55
|
+
parent: "folder",
|
|
56
|
+
validation: [{
|
|
57
|
+
name: "required",
|
|
58
|
+
message: "Value is required."
|
|
59
|
+
}]
|
|
60
|
+
});
|
|
61
|
+
const parentIdField = () => (0, _createModelField.createModelField)({
|
|
62
|
+
label: "Parent Id",
|
|
63
|
+
type: "text",
|
|
64
|
+
parent: "folder"
|
|
65
|
+
});
|
|
66
|
+
const FOLDER_MODEL_ID = "acoFolder";
|
|
67
|
+
exports.FOLDER_MODEL_ID = FOLDER_MODEL_ID;
|
|
68
|
+
const createFolderModelDefinition = () => {
|
|
69
|
+
return {
|
|
70
|
+
name: "ACO - Folder",
|
|
71
|
+
modelId: FOLDER_MODEL_ID,
|
|
72
|
+
titleFieldId: "title",
|
|
73
|
+
layout: [["folder_title"], ["folder_slug"], ["folder_type"], ["folder_parentId"]],
|
|
74
|
+
fields: [titleField(), slugField(), typeField(), parentIdField()],
|
|
75
|
+
description: "ACO - Folder content model",
|
|
76
|
+
isPrivate: true
|
|
77
|
+
};
|
|
78
|
+
};
|
|
79
|
+
exports.createFolderModelDefinition = createFolderModelDefinition;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["titleField","createModelField","label","type","parent","validation","name","message","settings","value","slugField","preset","regex","flags","typeField","parentIdField","FOLDER_MODEL_ID","createFolderModelDefinition","modelId","titleFieldId","layout","fields","description","isPrivate"],"sources":["folder.model.ts"],"sourcesContent":["import { CmsModel } from \"@webiny/api-headless-cms/types\";\n\nimport { createModelField } from \"~/utils/createModelField\";\n\nexport type FolderModelDefinition = Pick<\n CmsModel,\n \"name\" | \"modelId\" | \"layout\" | \"titleFieldId\" | \"description\" | \"fields\" | \"isPrivate\"\n> & { isPrivate: true };\n\nconst titleField = () =>\n createModelField({\n label: \"Title\",\n type: \"text\",\n parent: \"folder\",\n validation: [\n {\n name: \"required\",\n message: \"Value is required.\"\n },\n {\n name: \"minLength\",\n settings: {\n value: \"3\"\n },\n message: \"Value is too short.\"\n }\n ]\n });\n\nconst slugField = () =>\n createModelField({\n label: \"Slug\",\n type: \"text\",\n parent: \"folder\",\n validation: [\n {\n name: \"required\",\n message: \"Value is required.\"\n },\n {\n name: \"minLength\",\n settings: {\n value: \"3\"\n },\n message: \"Value is too short.\"\n },\n {\n name: \"maxLength\",\n settings: {\n value: \"100\"\n },\n message: \"Value is too long.\"\n },\n {\n name: \"pattern\",\n settings: {\n preset: \"custom\",\n regex: \"^[a-z0-9]+(-[a-z0-9]+)*$\",\n flags: \"g\"\n },\n message: \"Value must consist of only 'a-z', '0-9' and '-'.\"\n }\n ]\n });\n\nconst typeField = () =>\n createModelField({\n label: \"Type\",\n type: \"text\",\n parent: \"folder\",\n validation: [\n {\n name: \"required\",\n message: \"Value is required.\"\n }\n ]\n });\n\nconst parentIdField = () =>\n createModelField({\n label: \"Parent Id\",\n type: \"text\",\n parent: \"folder\"\n });\n\nexport const FOLDER_MODEL_ID = \"acoFolder\";\n\nexport const createFolderModelDefinition = (): FolderModelDefinition => {\n return {\n name: \"ACO - Folder\",\n modelId: FOLDER_MODEL_ID,\n titleFieldId: \"title\",\n layout: [[\"folder_title\"], [\"folder_slug\"], [\"folder_type\"], [\"folder_parentId\"]],\n fields: [titleField(), slugField(), typeField(), parentIdField()],\n description: \"ACO - Folder content model\",\n isPrivate: true\n };\n};\n"],"mappings":";;;;;;AAEA;AAOA,MAAMA,UAAU,GAAG,MACf,IAAAC,kCAAgB,EAAC;EACbC,KAAK,EAAE,OAAO;EACdC,IAAI,EAAE,MAAM;EACZC,MAAM,EAAE,QAAQ;EAChBC,UAAU,EAAE,CACR;IACIC,IAAI,EAAE,UAAU;IAChBC,OAAO,EAAE;EACb,CAAC,EACD;IACID,IAAI,EAAE,WAAW;IACjBE,QAAQ,EAAE;MACNC,KAAK,EAAE;IACX,CAAC;IACDF,OAAO,EAAE;EACb,CAAC;AAET,CAAC,CAAC;AAEN,MAAMG,SAAS,GAAG,MACd,IAAAT,kCAAgB,EAAC;EACbC,KAAK,EAAE,MAAM;EACbC,IAAI,EAAE,MAAM;EACZC,MAAM,EAAE,QAAQ;EAChBC,UAAU,EAAE,CACR;IACIC,IAAI,EAAE,UAAU;IAChBC,OAAO,EAAE;EACb,CAAC,EACD;IACID,IAAI,EAAE,WAAW;IACjBE,QAAQ,EAAE;MACNC,KAAK,EAAE;IACX,CAAC;IACDF,OAAO,EAAE;EACb,CAAC,EACD;IACID,IAAI,EAAE,WAAW;IACjBE,QAAQ,EAAE;MACNC,KAAK,EAAE;IACX,CAAC;IACDF,OAAO,EAAE;EACb,CAAC,EACD;IACID,IAAI,EAAE,SAAS;IACfE,QAAQ,EAAE;MACNG,MAAM,EAAE,QAAQ;MAChBC,KAAK,EAAE,0BAA0B;MACjCC,KAAK,EAAE;IACX,CAAC;IACDN,OAAO,EAAE;EACb,CAAC;AAET,CAAC,CAAC;AAEN,MAAMO,SAAS,GAAG,MACd,IAAAb,kCAAgB,EAAC;EACbC,KAAK,EAAE,MAAM;EACbC,IAAI,EAAE,MAAM;EACZC,MAAM,EAAE,QAAQ;EAChBC,UAAU,EAAE,CACR;IACIC,IAAI,EAAE,UAAU;IAChBC,OAAO,EAAE;EACb,CAAC;AAET,CAAC,CAAC;AAEN,MAAMQ,aAAa,GAAG,MAClB,IAAAd,kCAAgB,EAAC;EACbC,KAAK,EAAE,WAAW;EAClBC,IAAI,EAAE,MAAM;EACZC,MAAM,EAAE;AACZ,CAAC,CAAC;AAEC,MAAMY,eAAe,GAAG,WAAW;AAAC;AAEpC,MAAMC,2BAA2B,GAAG,MAA6B;EACpE,OAAO;IACHX,IAAI,EAAE,cAAc;IACpBY,OAAO,EAAEF,eAAe;IACxBG,YAAY,EAAE,OAAO;IACrBC,MAAM,EAAE,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC;IACjFC,MAAM,EAAE,CAACrB,UAAU,EAAE,EAAEU,SAAS,EAAE,EAAEI,SAAS,EAAE,EAAEC,aAAa,EAAE,CAAC;IACjEO,WAAW,EAAE,4BAA4B;IACzCC,SAAS,EAAE;EACf,CAAC;AACL,CAAC;AAAC"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.createFolderOperations = void 0;
|
|
8
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
9
|
+
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
10
|
+
var _folder = require("./folder.model");
|
|
11
|
+
var _createAcoStorageOperations = require("../createAcoStorageOperations");
|
|
12
|
+
var _createListSort = require("../utils/createListSort");
|
|
13
|
+
var _createOperationsWrapper = require("../utils/createOperationsWrapper");
|
|
14
|
+
var _getFieldValues = require("../utils/getFieldValues");
|
|
15
|
+
const createFolderOperations = params => {
|
|
16
|
+
const {
|
|
17
|
+
cms
|
|
18
|
+
} = params;
|
|
19
|
+
const {
|
|
20
|
+
withModel
|
|
21
|
+
} = (0, _createOperationsWrapper.createOperationsWrapper)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, params), {}, {
|
|
22
|
+
modelName: _folder.FOLDER_MODEL_ID
|
|
23
|
+
}));
|
|
24
|
+
const getFolder = ({
|
|
25
|
+
id,
|
|
26
|
+
slug,
|
|
27
|
+
type,
|
|
28
|
+
parentId
|
|
29
|
+
}) => {
|
|
30
|
+
return withModel(async model => {
|
|
31
|
+
let entry;
|
|
32
|
+
if (id) {
|
|
33
|
+
entry = await cms.getEntryById(model, id);
|
|
34
|
+
} else if (slug && type) {
|
|
35
|
+
entry = await cms.getEntry(model, {
|
|
36
|
+
where: {
|
|
37
|
+
slug,
|
|
38
|
+
type,
|
|
39
|
+
parentId,
|
|
40
|
+
latest: true
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
if (!entry) {
|
|
45
|
+
throw new _error.default("Could not load folder.", "GET_FOLDER_ERROR", {
|
|
46
|
+
id,
|
|
47
|
+
slug,
|
|
48
|
+
type,
|
|
49
|
+
parentId
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
return (0, _getFieldValues.getFieldValues)(entry, _createAcoStorageOperations.baseFields);
|
|
53
|
+
});
|
|
54
|
+
};
|
|
55
|
+
const checkExistingFolder = ({
|
|
56
|
+
id,
|
|
57
|
+
params
|
|
58
|
+
}) => {
|
|
59
|
+
return withModel(async model => {
|
|
60
|
+
const {
|
|
61
|
+
type,
|
|
62
|
+
slug,
|
|
63
|
+
parentId
|
|
64
|
+
} = params;
|
|
65
|
+
const [existings] = await cms.listLatestEntries(model, {
|
|
66
|
+
where: {
|
|
67
|
+
type,
|
|
68
|
+
slug,
|
|
69
|
+
parentId,
|
|
70
|
+
id_not: id
|
|
71
|
+
},
|
|
72
|
+
limit: 1
|
|
73
|
+
});
|
|
74
|
+
if (existings.length > 0) {
|
|
75
|
+
throw new _error.default(`Folder with slug "${slug}" already exists at this level.`, "FOLDER_ALREADY_EXISTS", {
|
|
76
|
+
id,
|
|
77
|
+
params
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
return;
|
|
81
|
+
});
|
|
82
|
+
};
|
|
83
|
+
return {
|
|
84
|
+
getFolder,
|
|
85
|
+
listFolders(params) {
|
|
86
|
+
return withModel(async model => {
|
|
87
|
+
const {
|
|
88
|
+
sort,
|
|
89
|
+
where
|
|
90
|
+
} = params;
|
|
91
|
+
const [entries, meta] = await cms.listLatestEntries(model, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, params), {}, {
|
|
92
|
+
sort: (0, _createListSort.createListSort)(sort),
|
|
93
|
+
where: (0, _objectSpread2.default)({}, where || {})
|
|
94
|
+
}));
|
|
95
|
+
return [entries.map(entry => (0, _getFieldValues.getFieldValues)(entry, _createAcoStorageOperations.baseFields)), meta];
|
|
96
|
+
});
|
|
97
|
+
},
|
|
98
|
+
createFolder({
|
|
99
|
+
data
|
|
100
|
+
}) {
|
|
101
|
+
return withModel(async model => {
|
|
102
|
+
await checkExistingFolder({
|
|
103
|
+
params: {
|
|
104
|
+
type: data.type,
|
|
105
|
+
slug: data.slug,
|
|
106
|
+
parentId: data.parentId
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
const entry = await cms.createEntry(model, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, data), {}, {
|
|
110
|
+
parentId: data.parentId || null
|
|
111
|
+
}));
|
|
112
|
+
return (0, _getFieldValues.getFieldValues)(entry, _createAcoStorageOperations.baseFields);
|
|
113
|
+
});
|
|
114
|
+
},
|
|
115
|
+
updateFolder({
|
|
116
|
+
id,
|
|
117
|
+
data
|
|
118
|
+
}) {
|
|
119
|
+
return withModel(async model => {
|
|
120
|
+
const {
|
|
121
|
+
slug,
|
|
122
|
+
parentId
|
|
123
|
+
} = data;
|
|
124
|
+
const original = await getFolder({
|
|
125
|
+
id
|
|
126
|
+
});
|
|
127
|
+
await checkExistingFolder({
|
|
128
|
+
id,
|
|
129
|
+
params: {
|
|
130
|
+
type: original.type,
|
|
131
|
+
slug: slug || original.slug,
|
|
132
|
+
parentId: parentId !== undefined ? parentId : original.parentId // parentId can be `null`
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
const input = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, original), data);
|
|
137
|
+
const entry = await cms.updateEntry(model, id, input);
|
|
138
|
+
return (0, _getFieldValues.getFieldValues)(entry, _createAcoStorageOperations.baseFields);
|
|
139
|
+
});
|
|
140
|
+
},
|
|
141
|
+
deleteFolder({
|
|
142
|
+
id
|
|
143
|
+
}) {
|
|
144
|
+
return withModel(async model => {
|
|
145
|
+
await cms.deleteEntry(model, id);
|
|
146
|
+
return true;
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
};
|
|
150
|
+
};
|
|
151
|
+
exports.createFolderOperations = createFolderOperations;
|
|
@@ -0,0 +1 @@
|
|
|
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","sort","entries","meta","createListSort","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 { createListSort } from \"~/utils/createListSort\";\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 { sort, where } = params;\n\n const [entries, meta] = await cms.listLatestEntries(model, {\n ...params,\n sort: createListSort(sort),\n where: {\n ...(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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"}
|