@webiny/api-aco 0.0.0-unstable.8acc9e8892 → 0.0.0-unstable.aa00eecd97
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/createAcoModels.js +1 -9
- package/createAcoModels.js.map +1 -1
- package/folder/folder.gql.js +19 -4
- package/folder/folder.gql.js.map +1 -1
- package/index.d.ts +1 -1
- package/package.json +32 -32
- package/record/record.crud.js +3 -0
- package/record/record.crud.js.map +1 -1
- package/record/record.gql.js +59 -5
- package/record/record.gql.js.map +1 -1
- package/record/record.so.js +34 -0
- package/record/record.so.js.map +1 -1
- package/record/record.types.d.ts +13 -0
- package/record/record.types.js.map +1 -1
- package/utils/checkPermissions.d.ts +2 -0
- package/utils/checkPermissions.js +14 -0
- package/utils/checkPermissions.js.map +1 -0
- package/context/folders.d.ts +0 -2
- package/context/folders.js +0 -261
- package/context/folders.js.map +0 -1
- package/context/index.d.ts +0 -2
- package/context/index.js +0 -22
- package/context/index.js.map +0 -1
- package/context/links.d.ts +0 -2
- package/context/links.js +0 -270
- package/context/links.js.map +0 -1
- package/graphql/base.gql.d.ts +0 -3
- package/graphql/base.gql.js +0 -63
- package/graphql/base.gql.js.map +0 -1
- package/graphql/folders.gql.d.ts +0 -3
- package/graphql/folders.gql.js +0 -126
- package/graphql/folders.gql.js.map +0 -1
- package/graphql/index.d.ts +0 -1
- package/graphql/index.js +0 -15
- package/graphql/index.js.map +0 -1
- package/graphql/links.gql.d.ts +0 -3
- package/graphql/links.gql.js +0 -123
- package/graphql/links.gql.js.map +0 -1
- package/subscriptions/afterFolderDelete.d.ts +0 -3
- package/subscriptions/afterFolderDelete.js +0 -62
- package/subscriptions/afterFolderDelete.js.map +0 -1
- package/subscriptions/index.d.ts +0 -3
- package/subscriptions/index.js +0 -14
- package/subscriptions/index.js.map +0 -1
package/createAcoModels.js
CHANGED
|
@@ -1,16 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
3
|
Object.defineProperty(exports, "__esModule", {
|
|
5
4
|
value: true
|
|
6
5
|
});
|
|
7
6
|
exports.createAcoModels = void 0;
|
|
8
7
|
var _apiHeadlessCms = require("@webiny/api-headless-cms");
|
|
9
|
-
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
10
8
|
var _folder = require("./folder/folder.model");
|
|
11
9
|
var _record = require("./record/record.model");
|
|
12
|
-
var _modelFactory = require("./utils/modelFactory");
|
|
13
10
|
var _isInstallationPending = require("./utils/isInstallationPending");
|
|
11
|
+
var _modelFactory = require("./utils/modelFactory");
|
|
14
12
|
const createAcoModels = context => {
|
|
15
13
|
/**
|
|
16
14
|
* This should never happen in the actual project.
|
|
@@ -26,10 +24,6 @@ const createAcoModels = context => {
|
|
|
26
24
|
})) {
|
|
27
25
|
return;
|
|
28
26
|
}
|
|
29
|
-
const locale = context.i18n.getContentLocale();
|
|
30
|
-
if (!locale) {
|
|
31
|
-
throw new _error.default("Missing content locale in api-aco/storageOperations/index.ts", "LOCALE_ERROR");
|
|
32
|
-
}
|
|
33
27
|
const groupId = "contentModelGroup_aco";
|
|
34
28
|
|
|
35
29
|
/**
|
|
@@ -51,8 +45,6 @@ const createAcoModels = context => {
|
|
|
51
45
|
const cmsModelPlugins = modelDefinitions.map(modelDefinition => {
|
|
52
46
|
return (0, _modelFactory.modelFactory)({
|
|
53
47
|
group: cmsGroupPlugin.contentModelGroup,
|
|
54
|
-
tenant: context.tenancy.getCurrentTenant().id,
|
|
55
|
-
locale: locale.code,
|
|
56
48
|
modelDefinition
|
|
57
49
|
});
|
|
58
50
|
});
|
package/createAcoModels.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createAcoModels","context","cms","console","warn","isInstallationPending","tenancy","i18n","
|
|
1
|
+
{"version":3,"names":["createAcoModels","context","cms","console","warn","isInstallationPending","tenancy","i18n","groupId","cmsGroupPlugin","CmsGroupPlugin","id","slug","name","description","icon","isPrivate","modelDefinitions","createFolderModelDefinition","createSearchModelDefinition","cmsModelPlugins","map","modelDefinition","modelFactory","group","contentModelGroup","plugins","register"],"sources":["createAcoModels.ts"],"sourcesContent":["import { CmsGroupPlugin } from \"@webiny/api-headless-cms\";\nimport { CmsContext } from \"@webiny/api-headless-cms/types\";\nimport { createFolderModelDefinition } from \"~/folder/folder.model\";\nimport { createSearchModelDefinition } from \"~/record/record.model\";\nimport { isInstallationPending } from \"~/utils/isInstallationPending\";\nimport { modelFactory } from \"~/utils/modelFactory\";\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 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 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"],"mappings":";;;;;;AAAA;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;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;MACvCH;IACJ,CAAC,CAAC;EACN,CAAC,CAAC;;EAEF;AACJ;AACA;EACIrB,OAAO,CAACyB,OAAO,CAACC,QAAQ,CAAC,CAAClB,cAAc,EAAEW,eAAe,CAAC,CAAC;AAC/D,CAAC;AAAC"}
|
package/folder/folder.gql.js
CHANGED
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.folderSchema = void 0;
|
|
7
7
|
var _responses = require("@webiny/handler-graphql/responses");
|
|
8
8
|
var _GraphQLSchemaPlugin = require("@webiny/handler-graphql/plugins/GraphQLSchemaPlugin");
|
|
9
|
+
var _checkPermissions = require("../utils/checkPermissions");
|
|
9
10
|
var _resolve = require("../utils/resolve");
|
|
10
11
|
const folderSchema = new _GraphQLSchemaPlugin.GraphQLSchemaPlugin({
|
|
11
12
|
typeDefs: /* GraphQL */`
|
|
@@ -36,6 +37,7 @@ const folderSchema = new _GraphQLSchemaPlugin.GraphQLSchemaPlugin({
|
|
|
36
37
|
input FoldersListWhereInput {
|
|
37
38
|
type: String!
|
|
38
39
|
parentId: String
|
|
40
|
+
createdBy: ID
|
|
39
41
|
}
|
|
40
42
|
|
|
41
43
|
type FolderResponse {
|
|
@@ -69,10 +71,14 @@ const folderSchema = new _GraphQLSchemaPlugin.GraphQLSchemaPlugin({
|
|
|
69
71
|
getFolder: async (_, {
|
|
70
72
|
id
|
|
71
73
|
}, context) => {
|
|
72
|
-
return (0, _resolve.resolve)(() =>
|
|
74
|
+
return (0, _resolve.resolve)(() => {
|
|
75
|
+
(0, _checkPermissions.checkPermissions)(context);
|
|
76
|
+
return context.aco.folder.get(id);
|
|
77
|
+
});
|
|
73
78
|
},
|
|
74
79
|
listFolders: async (_, args, context) => {
|
|
75
80
|
try {
|
|
81
|
+
await (0, _checkPermissions.checkPermissions)(context);
|
|
76
82
|
const [entries, meta] = await context.aco.folder.list(args);
|
|
77
83
|
return new _responses.ListResponse(entries, meta);
|
|
78
84
|
} catch (e) {
|
|
@@ -84,18 +90,27 @@ const folderSchema = new _GraphQLSchemaPlugin.GraphQLSchemaPlugin({
|
|
|
84
90
|
createFolder: async (_, {
|
|
85
91
|
data
|
|
86
92
|
}, context) => {
|
|
87
|
-
return (0, _resolve.resolve)(() =>
|
|
93
|
+
return (0, _resolve.resolve)(() => {
|
|
94
|
+
(0, _checkPermissions.checkPermissions)(context);
|
|
95
|
+
return context.aco.folder.create(data);
|
|
96
|
+
});
|
|
88
97
|
},
|
|
89
98
|
updateFolder: async (_, {
|
|
90
99
|
id,
|
|
91
100
|
data
|
|
92
101
|
}, context) => {
|
|
93
|
-
return (0, _resolve.resolve)(() =>
|
|
102
|
+
return (0, _resolve.resolve)(() => {
|
|
103
|
+
(0, _checkPermissions.checkPermissions)(context);
|
|
104
|
+
return context.aco.folder.update(id, data);
|
|
105
|
+
});
|
|
94
106
|
},
|
|
95
107
|
deleteFolder: async (_, {
|
|
96
108
|
id
|
|
97
109
|
}, context) => {
|
|
98
|
-
return (0, _resolve.resolve)(() =>
|
|
110
|
+
return (0, _resolve.resolve)(() => {
|
|
111
|
+
(0, _checkPermissions.checkPermissions)(context);
|
|
112
|
+
return context.aco.folder.delete(id);
|
|
113
|
+
});
|
|
99
114
|
}
|
|
100
115
|
}
|
|
101
116
|
}
|
package/folder/folder.gql.js.map
CHANGED
|
@@ -1 +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,
|
|
1
|
+
{"version":3,"names":["folderSchema","GraphQLSchemaPlugin","typeDefs","resolvers","AcoQuery","getFolder","_","id","context","resolve","checkPermissions","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 { checkPermissions } from \"~/utils/checkPermissions\";\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 createdBy: ID\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(() => {\n checkPermissions(context);\n return context.aco.folder.get(id);\n });\n },\n listFolders: async (_, args: any, context) => {\n try {\n await checkPermissions(context);\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(() => {\n checkPermissions(context);\n return context.aco.folder.create(data);\n });\n },\n updateFolder: async (_, { id, data }, context) => {\n return resolve(() => {\n checkPermissions(context);\n return context.aco.folder.update(id, data);\n });\n },\n deleteFolder: async (_, { id }, context) => {\n return resolve(() => {\n checkPermissions(context);\n return context.aco.folder.delete(id);\n });\n }\n }\n }\n});\n"],"mappings":";;;;;;AAAA;AACA;AAEA;AACA;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;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,MAAM;UACjB,IAAAC,kCAAgB,EAACF,OAAO,CAAC;UACzB,OAAOA,OAAO,CAACG,GAAG,CAACC,MAAM,CAACC,GAAG,CAACN,EAAE,CAAC;QACrC,CAAC,CAAC;MACN,CAAC;MACDO,WAAW,EAAE,OAAOR,CAAC,EAAES,IAAS,EAAEP,OAAO,KAAK;QAC1C,IAAI;UACA,MAAM,IAAAE,kCAAgB,EAACF,OAAO,CAAC;UAC/B,MAAM,CAACQ,OAAO,EAAEC,IAAI,CAAC,GAAG,MAAMT,OAAO,CAACG,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,OAAOjB,CAAC,EAAE;QAAEkB;MAAK,CAAC,EAAEhB,OAAO,KAAK;QAC1C,OAAO,IAAAC,gBAAO,EAAC,MAAM;UACjB,IAAAC,kCAAgB,EAACF,OAAO,CAAC;UACzB,OAAOA,OAAO,CAACG,GAAG,CAACC,MAAM,CAACa,MAAM,CAACD,IAAI,CAAC;QAC1C,CAAC,CAAC;MACN,CAAC;MACDE,YAAY,EAAE,OAAOpB,CAAC,EAAE;QAAEC,EAAE;QAAEiB;MAAK,CAAC,EAAEhB,OAAO,KAAK;QAC9C,OAAO,IAAAC,gBAAO,EAAC,MAAM;UACjB,IAAAC,kCAAgB,EAACF,OAAO,CAAC;UACzB,OAAOA,OAAO,CAACG,GAAG,CAACC,MAAM,CAACe,MAAM,CAACpB,EAAE,EAAEiB,IAAI,CAAC;QAC9C,CAAC,CAAC;MACN,CAAC;MACDI,YAAY,EAAE,OAAOtB,CAAC,EAAE;QAAEC;MAAG,CAAC,EAAEC,OAAO,KAAK;QACxC,OAAO,IAAAC,gBAAO,EAAC,MAAM;UACjB,IAAAC,kCAAgB,EAACF,OAAO,CAAC;UACzB,OAAOA,OAAO,CAACG,GAAG,CAACC,MAAM,CAACiB,MAAM,CAACtB,EAAE,CAAC;QACxC,CAAC,CAAC;MACN;IACJ;EACJ;AACJ,CAAC,CAAC;AAAC"}
|
package/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { SEARCH_RECORD_MODEL_ID } from "./record/record.model";
|
|
2
2
|
export { FOLDER_MODEL_ID } from "./folder/folder.model";
|
|
3
|
-
export declare const createAco: () => (import("@webiny/api").ContextPlugin<import("./types").AcoContext> | import("@webiny/api-headless-cms/types").CmsModelFieldToGraphQLPlugin<import("@webiny/api-headless-cms/types").CmsModelField>[] | import("@webiny/
|
|
3
|
+
export declare const createAco: () => (import("@webiny/api").ContextPlugin<import("./types").AcoContext> | import("@webiny/api-headless-cms/types").CmsModelFieldToGraphQLPlugin<import("@webiny/api-headless-cms/types").CmsModelField>[] | import("@webiny/handler").ContextPlugin<import("@webiny/api-admin-settings/types").AdminSettingsContext>)[];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/api-aco",
|
|
3
|
-
"version": "0.0.0-unstable.
|
|
3
|
+
"version": "0.0.0-unstable.aa00eecd97",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"aco:base"
|
|
@@ -21,38 +21,38 @@
|
|
|
21
21
|
"access": "public",
|
|
22
22
|
"directory": "dist"
|
|
23
23
|
},
|
|
24
|
-
"devDependencies": {
|
|
25
|
-
"@babel/cli": "^7.19.3",
|
|
26
|
-
"@babel/core": "^7.19.3",
|
|
27
|
-
"@babel/preset-env": "^7.19.4",
|
|
28
|
-
"@babel/preset-typescript": "^7.18.6",
|
|
29
|
-
"@babel/runtime": "^7.19.0",
|
|
30
|
-
"@webiny/api-headless-cms-ddb": "^0.0.0-unstable.8acc9e8892",
|
|
31
|
-
"@webiny/api-i18n-ddb": "^0.0.0-unstable.8acc9e8892",
|
|
32
|
-
"@webiny/api-security-so-ddb": "^0.0.0-unstable.8acc9e8892",
|
|
33
|
-
"@webiny/api-tenancy-so-ddb": "^0.0.0-unstable.8acc9e8892",
|
|
34
|
-
"@webiny/api-wcp": "^0.0.0-unstable.8acc9e8892",
|
|
35
|
-
"@webiny/cli": "^0.0.0-unstable.8acc9e8892",
|
|
36
|
-
"@webiny/handler-aws": "^0.0.0-unstable.8acc9e8892",
|
|
37
|
-
"@webiny/plugins": "^0.0.0-unstable.8acc9e8892",
|
|
38
|
-
"@webiny/project-utils": "^0.0.0-unstable.8acc9e8892",
|
|
39
|
-
"rimraf": "^3.0.2",
|
|
40
|
-
"ttypescript": "^1.5.13",
|
|
41
|
-
"typescript": "^4.7.4"
|
|
42
|
-
},
|
|
43
24
|
"dependencies": {
|
|
44
|
-
"@webiny/api": "0.0.0-unstable.
|
|
45
|
-
"@webiny/api-admin-settings": "0.0.0-unstable.
|
|
46
|
-
"@webiny/api-headless-cms": "0.0.0-unstable.
|
|
47
|
-
"@webiny/api-i18n": "0.0.0-unstable.
|
|
48
|
-
"@webiny/api-security": "0.0.0-unstable.
|
|
49
|
-
"@webiny/api-tenancy": "0.0.0-unstable.
|
|
50
|
-
"@webiny/error": "0.0.0-unstable.
|
|
51
|
-
"@webiny/handler": "0.0.0-unstable.
|
|
52
|
-
"@webiny/handler-graphql": "0.0.0-unstable.
|
|
53
|
-
"@webiny/pubsub": "0.0.0-unstable.
|
|
54
|
-
"@webiny/utils": "0.0.0-unstable.
|
|
25
|
+
"@webiny/api": "0.0.0-unstable.aa00eecd97",
|
|
26
|
+
"@webiny/api-admin-settings": "0.0.0-unstable.aa00eecd97",
|
|
27
|
+
"@webiny/api-headless-cms": "0.0.0-unstable.aa00eecd97",
|
|
28
|
+
"@webiny/api-i18n": "0.0.0-unstable.aa00eecd97",
|
|
29
|
+
"@webiny/api-security": "0.0.0-unstable.aa00eecd97",
|
|
30
|
+
"@webiny/api-tenancy": "0.0.0-unstable.aa00eecd97",
|
|
31
|
+
"@webiny/error": "0.0.0-unstable.aa00eecd97",
|
|
32
|
+
"@webiny/handler": "0.0.0-unstable.aa00eecd97",
|
|
33
|
+
"@webiny/handler-graphql": "0.0.0-unstable.aa00eecd97",
|
|
34
|
+
"@webiny/pubsub": "0.0.0-unstable.aa00eecd97",
|
|
35
|
+
"@webiny/utils": "0.0.0-unstable.aa00eecd97",
|
|
55
36
|
"lodash": "4.17.21"
|
|
56
37
|
},
|
|
57
|
-
"
|
|
38
|
+
"devDependencies": {
|
|
39
|
+
"@babel/cli": "7.20.7",
|
|
40
|
+
"@babel/core": "7.20.12",
|
|
41
|
+
"@babel/preset-env": "7.20.2",
|
|
42
|
+
"@babel/preset-typescript": "7.18.6",
|
|
43
|
+
"@babel/runtime": "7.20.13",
|
|
44
|
+
"@webiny/api-headless-cms-ddb": "0.0.0-unstable.aa00eecd97",
|
|
45
|
+
"@webiny/api-i18n-ddb": "0.0.0-unstable.aa00eecd97",
|
|
46
|
+
"@webiny/api-security-so-ddb": "0.0.0-unstable.aa00eecd97",
|
|
47
|
+
"@webiny/api-tenancy-so-ddb": "0.0.0-unstable.aa00eecd97",
|
|
48
|
+
"@webiny/api-wcp": "0.0.0-unstable.aa00eecd97",
|
|
49
|
+
"@webiny/cli": "0.0.0-unstable.aa00eecd97",
|
|
50
|
+
"@webiny/handler-aws": "0.0.0-unstable.aa00eecd97",
|
|
51
|
+
"@webiny/plugins": "0.0.0-unstable.aa00eecd97",
|
|
52
|
+
"@webiny/project-utils": "0.0.0-unstable.aa00eecd97",
|
|
53
|
+
"rimraf": "3.0.2",
|
|
54
|
+
"ttypescript": "1.5.15",
|
|
55
|
+
"typescript": "4.7.4"
|
|
56
|
+
},
|
|
57
|
+
"gitHead": "aa00eecd97d16da9bdb0581f33d491487ce43ce9"
|
|
58
58
|
}
|
package/record/record.crud.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createSearchRecordCrudMethods","storageOperations","onSearchRecordBeforeCreate","createTopic","onSearchRecordAfterCreate","onSearchRecordBeforeUpdate","onSearchRecordAfterUpdate","onSearchRecordBeforeDelete","onSearchRecordAfterDelete","get","id","getRecord","list","params","listRecords","create","data","publish","input","record","createRecord","update","original","updateRecord","delete","deleteRecord"],"sources":["record.crud.ts"],"sourcesContent":["import { createTopic } from \"@webiny/pubsub\";\n\nimport { CreateAcoParams } from \"~/types\";\nimport {\n AcoSearchRecordCrud,\n OnSearchRecordAfterCreateTopicParams,\n OnSearchRecordAfterDeleteTopicParams,\n OnSearchRecordAfterUpdateTopicParams,\n OnSearchRecordBeforeCreateTopicParams,\n OnSearchRecordBeforeDeleteTopicParams,\n OnSearchRecordBeforeUpdateTopicParams\n} from \"./record.types\";\n\nexport const createSearchRecordCrudMethods = ({\n storageOperations\n}: CreateAcoParams): AcoSearchRecordCrud => {\n // create\n const onSearchRecordBeforeCreate = createTopic<OnSearchRecordBeforeCreateTopicParams>(\n \"aco.onSearchRecordBeforeCreate\"\n );\n const onSearchRecordAfterCreate = createTopic<OnSearchRecordAfterCreateTopicParams>(\n \"aco.onSearchRecordAfterCreate\"\n );\n // update\n const onSearchRecordBeforeUpdate = createTopic<OnSearchRecordBeforeUpdateTopicParams>(\n \"aco.onSearchRecordBeforeUpdate\"\n );\n const onSearchRecordAfterUpdate = createTopic<OnSearchRecordAfterUpdateTopicParams>(\n \"aco.onSearchRecordAfterUpdate\"\n );\n // delete\n const onSearchRecordBeforeDelete = createTopic<OnSearchRecordBeforeDeleteTopicParams>(\n \"aco.onSearchRecordBeforeDelete\"\n );\n const onSearchRecordAfterDelete = createTopic<OnSearchRecordAfterDeleteTopicParams>(\n \"aco.onSearchRecordAfterDelete\"\n );\n\n return {\n /**\n * Lifecycle events\n */\n onSearchRecordBeforeCreate,\n onSearchRecordAfterCreate,\n onSearchRecordBeforeUpdate,\n onSearchRecordAfterUpdate,\n onSearchRecordBeforeDelete,\n onSearchRecordAfterDelete,\n async get(id) {\n return storageOperations.getRecord({ id });\n },\n async list(params) {\n return storageOperations.listRecords(params);\n },\n async create(data) {\n await onSearchRecordBeforeCreate.publish({ input: data });\n const record = await storageOperations.createRecord({ data });\n await onSearchRecordAfterCreate.publish({ record });\n return record;\n },\n async update(id, data) {\n const original = await storageOperations.getRecord({ id });\n await onSearchRecordBeforeUpdate.publish({ original, input: { id, data } });\n const record = await storageOperations.updateRecord({ id, data });\n await onSearchRecordAfterUpdate.publish({ original, input: { id, data }, record });\n return record;\n },\n async delete(id: string) {\n const record = await storageOperations.getRecord({ id });\n await onSearchRecordBeforeDelete.publish({ record });\n await storageOperations.deleteRecord({ id });\n await onSearchRecordAfterDelete.publish({ record });\n return true;\n }\n };\n};\n"],"mappings":";;;;;;AAAA;AAaO,MAAMA,6BAA6B,GAAG,CAAC;EAC1CC;AACa,CAAC,KAA0B;EACxC;EACA,MAAMC,0BAA0B,GAAG,IAAAC,mBAAW,EAC1C,gCAAgC,CACnC;EACD,MAAMC,yBAAyB,GAAG,IAAAD,mBAAW,EACzC,+BAA+B,CAClC;EACD;EACA,MAAME,0BAA0B,GAAG,IAAAF,mBAAW,EAC1C,gCAAgC,CACnC;EACD,MAAMG,yBAAyB,GAAG,IAAAH,mBAAW,EACzC,+BAA+B,CAClC;EACD;EACA,MAAMI,0BAA0B,GAAG,IAAAJ,mBAAW,EAC1C,gCAAgC,CACnC;EACD,MAAMK,yBAAyB,GAAG,IAAAL,mBAAW,EACzC,+BAA+B,CAClC;EAED,OAAO;IACH;AACR;AACA;IACQD,0BAA0B;IAC1BE,yBAAyB;IACzBC,0BAA0B;IAC1BC,yBAAyB;IACzBC,0BAA0B;IAC1BC,yBAAyB;IACzB,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,0BAA0B,CAACe,OAAO,CAAC;QAAEC,KAAK,EAAEF;MAAK,CAAC,CAAC;MACzD,MAAMG,MAAM,GAAG,MAAMlB,iBAAiB,CAACmB,YAAY,CAAC;QAAEJ;MAAK,CAAC,CAAC;MAC7D,MAAMZ,yBAAyB,CAACa,OAAO,CAAC;QAAEE;MAAO,CAAC,CAAC;MACnD,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,0BAA0B,CAACY,OAAO,CAAC;QAAEK,QAAQ;QAAEJ,KAAK,EAAE;UAAER,EAAE;UAAEM;QAAK;MAAE,CAAC,CAAC;MAC3E,MAAMG,MAAM,GAAG,MAAMlB,iBAAiB,CAACsB,YAAY,CAAC;QAAEb,EAAE;QAAEM;MAAK,CAAC,CAAC;MACjE,MAAMV,yBAAyB,CAACW,OAAO,CAAC;QAAEK,QAAQ;QAAEJ,KAAK,EAAE;UAAER,EAAE;UAAEM;QAAK,CAAC;QAAEG;MAAO,CAAC,CAAC;MAClF,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,0BAA0B,CAACU,OAAO,CAAC;QAAEE;MAAO,CAAC,CAAC;MACpD,MAAMlB,iBAAiB,CAACwB,YAAY,CAAC;QAAEf;MAAG,CAAC,CAAC;MAC5C,MAAMF,yBAAyB,CAACS,OAAO,CAAC;QAAEE;MAAO,CAAC,CAAC;MACnD,OAAO,IAAI;IACf;EACJ,CAAC;AACL,CAAC;AAAC"}
|
|
1
|
+
{"version":3,"names":["createSearchRecordCrudMethods","storageOperations","onSearchRecordBeforeCreate","createTopic","onSearchRecordAfterCreate","onSearchRecordBeforeUpdate","onSearchRecordAfterUpdate","onSearchRecordBeforeDelete","onSearchRecordAfterDelete","get","id","getRecord","list","params","listRecords","create","data","publish","input","record","createRecord","update","original","updateRecord","delete","deleteRecord","listTags"],"sources":["record.crud.ts"],"sourcesContent":["import { createTopic } from \"@webiny/pubsub\";\n\nimport { CreateAcoParams } from \"~/types\";\nimport {\n AcoSearchRecordCrud,\n OnSearchRecordAfterCreateTopicParams,\n OnSearchRecordAfterDeleteTopicParams,\n OnSearchRecordAfterUpdateTopicParams,\n OnSearchRecordBeforeCreateTopicParams,\n OnSearchRecordBeforeDeleteTopicParams,\n OnSearchRecordBeforeUpdateTopicParams\n} from \"./record.types\";\n\nexport const createSearchRecordCrudMethods = ({\n storageOperations\n}: CreateAcoParams): AcoSearchRecordCrud => {\n // create\n const onSearchRecordBeforeCreate = createTopic<OnSearchRecordBeforeCreateTopicParams>(\n \"aco.onSearchRecordBeforeCreate\"\n );\n const onSearchRecordAfterCreate = createTopic<OnSearchRecordAfterCreateTopicParams>(\n \"aco.onSearchRecordAfterCreate\"\n );\n // update\n const onSearchRecordBeforeUpdate = createTopic<OnSearchRecordBeforeUpdateTopicParams>(\n \"aco.onSearchRecordBeforeUpdate\"\n );\n const onSearchRecordAfterUpdate = createTopic<OnSearchRecordAfterUpdateTopicParams>(\n \"aco.onSearchRecordAfterUpdate\"\n );\n // delete\n const onSearchRecordBeforeDelete = createTopic<OnSearchRecordBeforeDeleteTopicParams>(\n \"aco.onSearchRecordBeforeDelete\"\n );\n const onSearchRecordAfterDelete = createTopic<OnSearchRecordAfterDeleteTopicParams>(\n \"aco.onSearchRecordAfterDelete\"\n );\n\n return {\n /**\n * Lifecycle events\n */\n onSearchRecordBeforeCreate,\n onSearchRecordAfterCreate,\n onSearchRecordBeforeUpdate,\n onSearchRecordAfterUpdate,\n onSearchRecordBeforeDelete,\n onSearchRecordAfterDelete,\n async get(id) {\n return storageOperations.getRecord({ id });\n },\n async list(params) {\n return storageOperations.listRecords(params);\n },\n async create(data) {\n await onSearchRecordBeforeCreate.publish({ input: data });\n const record = await storageOperations.createRecord({ data });\n await onSearchRecordAfterCreate.publish({ record });\n return record;\n },\n async update(id, data) {\n const original = await storageOperations.getRecord({ id });\n await onSearchRecordBeforeUpdate.publish({ original, input: { id, data } });\n const record = await storageOperations.updateRecord({ id, data });\n await onSearchRecordAfterUpdate.publish({ original, input: { id, data }, record });\n return record;\n },\n async delete(id: string) {\n const record = await storageOperations.getRecord({ id });\n await onSearchRecordBeforeDelete.publish({ record });\n await storageOperations.deleteRecord({ id });\n await onSearchRecordAfterDelete.publish({ record });\n return true;\n },\n async listTags(params) {\n return storageOperations.listTags(params);\n }\n };\n};\n"],"mappings":";;;;;;AAAA;AAaO,MAAMA,6BAA6B,GAAG,CAAC;EAC1CC;AACa,CAAC,KAA0B;EACxC;EACA,MAAMC,0BAA0B,GAAG,IAAAC,mBAAW,EAC1C,gCAAgC,CACnC;EACD,MAAMC,yBAAyB,GAAG,IAAAD,mBAAW,EACzC,+BAA+B,CAClC;EACD;EACA,MAAME,0BAA0B,GAAG,IAAAF,mBAAW,EAC1C,gCAAgC,CACnC;EACD,MAAMG,yBAAyB,GAAG,IAAAH,mBAAW,EACzC,+BAA+B,CAClC;EACD;EACA,MAAMI,0BAA0B,GAAG,IAAAJ,mBAAW,EAC1C,gCAAgC,CACnC;EACD,MAAMK,yBAAyB,GAAG,IAAAL,mBAAW,EACzC,+BAA+B,CAClC;EAED,OAAO;IACH;AACR;AACA;IACQD,0BAA0B;IAC1BE,yBAAyB;IACzBC,0BAA0B;IAC1BC,yBAAyB;IACzBC,0BAA0B;IAC1BC,yBAAyB;IACzB,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,0BAA0B,CAACe,OAAO,CAAC;QAAEC,KAAK,EAAEF;MAAK,CAAC,CAAC;MACzD,MAAMG,MAAM,GAAG,MAAMlB,iBAAiB,CAACmB,YAAY,CAAC;QAAEJ;MAAK,CAAC,CAAC;MAC7D,MAAMZ,yBAAyB,CAACa,OAAO,CAAC;QAAEE;MAAO,CAAC,CAAC;MACnD,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,0BAA0B,CAACY,OAAO,CAAC;QAAEK,QAAQ;QAAEJ,KAAK,EAAE;UAAER,EAAE;UAAEM;QAAK;MAAE,CAAC,CAAC;MAC3E,MAAMG,MAAM,GAAG,MAAMlB,iBAAiB,CAACsB,YAAY,CAAC;QAAEb,EAAE;QAAEM;MAAK,CAAC,CAAC;MACjE,MAAMV,yBAAyB,CAACW,OAAO,CAAC;QAAEK,QAAQ;QAAEJ,KAAK,EAAE;UAAER,EAAE;UAAEM;QAAK,CAAC;QAAEG;MAAO,CAAC,CAAC;MAClF,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,0BAA0B,CAACU,OAAO,CAAC;QAAEE;MAAO,CAAC,CAAC;MACpD,MAAMlB,iBAAiB,CAACwB,YAAY,CAAC;QAAEf;MAAG,CAAC,CAAC;MAC5C,MAAMF,yBAAyB,CAACS,OAAO,CAAC;QAAEE;MAAO,CAAC,CAAC;MACnD,OAAO,IAAI;IACf,CAAC;IACD,MAAMO,QAAQ,CAACb,MAAM,EAAE;MACnB,OAAOZ,iBAAiB,CAACyB,QAAQ,CAACb,MAAM,CAAC;IAC7C;EACJ,CAAC;AACL,CAAC;AAAC"}
|
package/record/record.gql.js
CHANGED
|
@@ -6,9 +6,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.searchRecordSchema = void 0;
|
|
7
7
|
var _responses = require("@webiny/handler-graphql/responses");
|
|
8
8
|
var _GraphQLSchemaPlugin = require("@webiny/handler-graphql/plugins/GraphQLSchemaPlugin");
|
|
9
|
-
var _resolve = require("../utils/resolve");
|
|
10
9
|
var _utils = require("@webiny/utils");
|
|
11
10
|
var _acoRecordId = require("../utils/acoRecordId");
|
|
11
|
+
var _checkPermissions = require("../utils/checkPermissions");
|
|
12
|
+
var _resolve = require("../utils/resolve");
|
|
12
13
|
const searchRecordSchema = new _GraphQLSchemaPlugin.GraphQLSchemaPlugin({
|
|
13
14
|
typeDefs: /* GraphQL */`
|
|
14
15
|
type SearchRecord {
|
|
@@ -24,6 +25,11 @@ const searchRecordSchema = new _GraphQLSchemaPlugin.GraphQLSchemaPlugin({
|
|
|
24
25
|
createdBy: AcoUser
|
|
25
26
|
}
|
|
26
27
|
|
|
28
|
+
type TagItem {
|
|
29
|
+
tag: String!
|
|
30
|
+
count: Int!
|
|
31
|
+
}
|
|
32
|
+
|
|
27
33
|
type SearchLocationType {
|
|
28
34
|
folderId: ID!
|
|
29
35
|
}
|
|
@@ -50,12 +56,31 @@ const searchRecordSchema = new _GraphQLSchemaPlugin.GraphQLSchemaPlugin({
|
|
|
50
56
|
tags: [String!]
|
|
51
57
|
}
|
|
52
58
|
|
|
59
|
+
input BasicSearchRecordListWhereInput {
|
|
60
|
+
tags_in: [String!]
|
|
61
|
+
tags_startsWith: String
|
|
62
|
+
tags_not_startsWith: String
|
|
63
|
+
}
|
|
64
|
+
|
|
53
65
|
input SearchRecordListWhereInput {
|
|
54
66
|
type: String!
|
|
55
67
|
location: SearchLocationInput
|
|
56
68
|
tags_in: [String!]
|
|
57
69
|
tags_startsWith: String
|
|
58
70
|
tags_not_startsWith: String
|
|
71
|
+
createdBy: ID
|
|
72
|
+
AND: [BasicSearchRecordListWhereInput!]
|
|
73
|
+
OR: [BasicSearchRecordListWhereInput!]
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
input SearchRecordTagListWhereInput {
|
|
77
|
+
type: String
|
|
78
|
+
tags_in: [String!]
|
|
79
|
+
tags_startsWith: String
|
|
80
|
+
tags_not_startsWith: String
|
|
81
|
+
createdBy: ID
|
|
82
|
+
AND: [SearchRecordTagListWhereInput!]
|
|
83
|
+
OR: [SearchRecordTagListWhereInput!]
|
|
59
84
|
}
|
|
60
85
|
|
|
61
86
|
type SearchRecordResponse {
|
|
@@ -69,6 +94,12 @@ const searchRecordSchema = new _GraphQLSchemaPlugin.GraphQLSchemaPlugin({
|
|
|
69
94
|
meta: AcoMeta
|
|
70
95
|
}
|
|
71
96
|
|
|
97
|
+
type SearchRecordTagListResponse {
|
|
98
|
+
data: [TagItem!]
|
|
99
|
+
error: AcoError
|
|
100
|
+
meta: AcoMeta
|
|
101
|
+
}
|
|
102
|
+
|
|
72
103
|
extend type SearchQuery {
|
|
73
104
|
getRecord(id: ID!): SearchRecordResponse
|
|
74
105
|
listRecords(
|
|
@@ -78,6 +109,7 @@ const searchRecordSchema = new _GraphQLSchemaPlugin.GraphQLSchemaPlugin({
|
|
|
78
109
|
after: String
|
|
79
110
|
sort: AcoSort
|
|
80
111
|
): SearchRecordListResponse
|
|
112
|
+
listTags(where: SearchRecordTagListWhereInput): SearchRecordTagListResponse
|
|
81
113
|
}
|
|
82
114
|
|
|
83
115
|
extend type SearchMutation {
|
|
@@ -99,33 +131,55 @@ const searchRecordSchema = new _GraphQLSchemaPlugin.GraphQLSchemaPlugin({
|
|
|
99
131
|
getRecord: async (_, {
|
|
100
132
|
id
|
|
101
133
|
}, context) => {
|
|
102
|
-
return (0, _resolve.resolve)(() =>
|
|
134
|
+
return (0, _resolve.resolve)(() => {
|
|
135
|
+
(0, _checkPermissions.checkPermissions)(context);
|
|
136
|
+
return context.aco.search.get(id);
|
|
137
|
+
});
|
|
103
138
|
},
|
|
104
139
|
listRecords: async (_, args, context) => {
|
|
105
140
|
try {
|
|
141
|
+
await (0, _checkPermissions.checkPermissions)(context);
|
|
106
142
|
const [entries, meta] = await context.aco.search.list(args);
|
|
107
143
|
return new _responses.ListResponse(entries, meta);
|
|
108
144
|
} catch (e) {
|
|
109
145
|
return new _responses.ErrorResponse(e);
|
|
110
146
|
}
|
|
147
|
+
},
|
|
148
|
+
listTags: async (_, args, context) => {
|
|
149
|
+
try {
|
|
150
|
+
await (0, _checkPermissions.checkPermissions)(context);
|
|
151
|
+
const [tags, meta] = await context.aco.search.listTags(args);
|
|
152
|
+
return new _responses.ListResponse(tags, meta);
|
|
153
|
+
} catch (e) {
|
|
154
|
+
return new _responses.ErrorResponse(e);
|
|
155
|
+
}
|
|
111
156
|
}
|
|
112
157
|
},
|
|
113
158
|
SearchMutation: {
|
|
114
159
|
createRecord: async (_, {
|
|
115
160
|
data
|
|
116
161
|
}, context) => {
|
|
117
|
-
return (0, _resolve.resolve)(() =>
|
|
162
|
+
return (0, _resolve.resolve)(() => {
|
|
163
|
+
(0, _checkPermissions.checkPermissions)(context);
|
|
164
|
+
return context.aco.search.create(data);
|
|
165
|
+
});
|
|
118
166
|
},
|
|
119
167
|
updateRecord: async (_, {
|
|
120
168
|
id,
|
|
121
169
|
data
|
|
122
170
|
}, context) => {
|
|
123
|
-
return (0, _resolve.resolve)(() =>
|
|
171
|
+
return (0, _resolve.resolve)(() => {
|
|
172
|
+
(0, _checkPermissions.checkPermissions)(context);
|
|
173
|
+
return context.aco.search.update(id, data);
|
|
174
|
+
});
|
|
124
175
|
},
|
|
125
176
|
deleteRecord: async (_, {
|
|
126
177
|
id
|
|
127
178
|
}, context) => {
|
|
128
|
-
return (0, _resolve.resolve)(() =>
|
|
179
|
+
return (0, _resolve.resolve)(() => {
|
|
180
|
+
(0, _checkPermissions.checkPermissions)(context);
|
|
181
|
+
return context.aco.search.delete(id);
|
|
182
|
+
});
|
|
129
183
|
}
|
|
130
184
|
}
|
|
131
185
|
}
|
package/record/record.gql.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["searchRecordSchema","GraphQLSchemaPlugin","typeDefs","resolvers","SearchRecord","id","parent","parseIdentifier","removeAcoRecordPrefix","SearchQuery","getRecord","_","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\";\
|
|
1
|
+
{"version":3,"names":["searchRecordSchema","GraphQLSchemaPlugin","typeDefs","resolvers","SearchRecord","id","parent","parseIdentifier","removeAcoRecordPrefix","SearchQuery","getRecord","_","context","resolve","checkPermissions","aco","search","get","listRecords","args","entries","meta","list","ListResponse","e","ErrorResponse","listTags","tags","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\";\nimport { parseIdentifier } from \"@webiny/utils\";\n\nimport { removeAcoRecordPrefix } from \"~/utils/acoRecordId\";\nimport { checkPermissions } from \"~/utils/checkPermissions\";\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 tags: [String!]!\n savedOn: DateTime\n createdOn: DateTime\n createdBy: AcoUser\n }\n\n type TagItem {\n tag: String!\n count: Int!\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 tags: [String!]\n }\n\n input SearchRecordUpdateInput {\n title: String\n content: String\n location: SearchLocationInput\n data: JSON\n tags: [String!]\n }\n\n input BasicSearchRecordListWhereInput {\n tags_in: [String!]\n tags_startsWith: String\n tags_not_startsWith: String\n }\n\n input SearchRecordListWhereInput {\n type: String!\n location: SearchLocationInput\n tags_in: [String!]\n tags_startsWith: String\n tags_not_startsWith: String\n createdBy: ID\n AND: [BasicSearchRecordListWhereInput!]\n OR: [BasicSearchRecordListWhereInput!]\n }\n\n input SearchRecordTagListWhereInput {\n type: String\n tags_in: [String!]\n tags_startsWith: String\n tags_not_startsWith: String\n createdBy: ID\n AND: [SearchRecordTagListWhereInput!]\n OR: [SearchRecordTagListWhereInput!]\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 type SearchRecordTagListResponse {\n data: [TagItem!]\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: AcoSort\n ): SearchRecordListResponse\n listTags(where: SearchRecordTagListWhereInput): SearchRecordTagListResponse\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 SearchRecord: {\n id: async parent => {\n const { id } = parseIdentifier(parent.id);\n return removeAcoRecordPrefix(id);\n }\n },\n SearchQuery: {\n getRecord: async (_, { id }, context) => {\n return resolve(() => {\n checkPermissions(context);\n return context.aco.search.get(id);\n });\n },\n listRecords: async (_, args: any, context) => {\n try {\n await checkPermissions(context);\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 listTags: async (_, args: any, context) => {\n try {\n await checkPermissions(context);\n const [tags, meta] = await context.aco.search.listTags(args);\n return new ListResponse(tags, meta);\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n },\n SearchMutation: {\n createRecord: async (_, { data }, context) => {\n return resolve(() => {\n checkPermissions(context);\n return context.aco.search.create(data);\n });\n },\n updateRecord: async (_, { id, data }, context) => {\n return resolve(() => {\n checkPermissions(context);\n return context.aco.search.update(id, data);\n });\n },\n deleteRecord: async (_, { id }, context) => {\n return resolve(() => {\n checkPermissions(context);\n return context.aco.search.delete(id);\n });\n }\n }\n }\n});\n"],"mappings":";;;;;;AAAA;AACA;AACA;AAEA;AACA;AACA;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;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,YAAY,EAAE;MACVC,EAAE,EAAE,MAAMC,MAAM,IAAI;QAChB,MAAM;UAAED;QAAG,CAAC,GAAG,IAAAE,sBAAe,EAACD,MAAM,CAACD,EAAE,CAAC;QACzC,OAAO,IAAAG,kCAAqB,EAACH,EAAE,CAAC;MACpC;IACJ,CAAC;IACDI,WAAW,EAAE;MACTC,SAAS,EAAE,OAAOC,CAAC,EAAE;QAAEN;MAAG,CAAC,EAAEO,OAAO,KAAK;QACrC,OAAO,IAAAC,gBAAO,EAAC,MAAM;UACjB,IAAAC,kCAAgB,EAACF,OAAO,CAAC;UACzB,OAAOA,OAAO,CAACG,GAAG,CAACC,MAAM,CAACC,GAAG,CAACZ,EAAE,CAAC;QACrC,CAAC,CAAC;MACN,CAAC;MACDa,WAAW,EAAE,OAAOP,CAAC,EAAEQ,IAAS,EAAEP,OAAO,KAAK;QAC1C,IAAI;UACA,MAAM,IAAAE,kCAAgB,EAACF,OAAO,CAAC;UAC/B,MAAM,CAACQ,OAAO,EAAEC,IAAI,CAAC,GAAG,MAAMT,OAAO,CAACG,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,CAAC;MACDE,QAAQ,EAAE,OAAOf,CAAC,EAAEQ,IAAS,EAAEP,OAAO,KAAK;QACvC,IAAI;UACA,MAAM,IAAAE,kCAAgB,EAACF,OAAO,CAAC;UAC/B,MAAM,CAACe,IAAI,EAAEN,IAAI,CAAC,GAAG,MAAMT,OAAO,CAACG,GAAG,CAACC,MAAM,CAACU,QAAQ,CAACP,IAAI,CAAC;UAC5D,OAAO,IAAII,uBAAY,CAACI,IAAI,EAAEN,IAAI,CAAC;QACvC,CAAC,CAAC,OAAOG,CAAC,EAAE;UACR,OAAO,IAAIC,wBAAa,CAACD,CAAC,CAAC;QAC/B;MACJ;IACJ,CAAC;IACDI,cAAc,EAAE;MACZC,YAAY,EAAE,OAAOlB,CAAC,EAAE;QAAEmB;MAAK,CAAC,EAAElB,OAAO,KAAK;QAC1C,OAAO,IAAAC,gBAAO,EAAC,MAAM;UACjB,IAAAC,kCAAgB,EAACF,OAAO,CAAC;UACzB,OAAOA,OAAO,CAACG,GAAG,CAACC,MAAM,CAACe,MAAM,CAACD,IAAI,CAAC;QAC1C,CAAC,CAAC;MACN,CAAC;MACDE,YAAY,EAAE,OAAOrB,CAAC,EAAE;QAAEN,EAAE;QAAEyB;MAAK,CAAC,EAAElB,OAAO,KAAK;QAC9C,OAAO,IAAAC,gBAAO,EAAC,MAAM;UACjB,IAAAC,kCAAgB,EAACF,OAAO,CAAC;UACzB,OAAOA,OAAO,CAACG,GAAG,CAACC,MAAM,CAACiB,MAAM,CAAC5B,EAAE,EAAEyB,IAAI,CAAC;QAC9C,CAAC,CAAC;MACN,CAAC;MACDI,YAAY,EAAE,OAAOvB,CAAC,EAAE;QAAEN;MAAG,CAAC,EAAEO,OAAO,KAAK;QACxC,OAAO,IAAAC,gBAAO,EAAC,MAAM;UACjB,IAAAC,kCAAgB,EAACF,OAAO,CAAC;UACzB,OAAOA,OAAO,CAACG,GAAG,CAACC,MAAM,CAACmB,MAAM,CAAC9B,EAAE,CAAC;QACxC,CAAC,CAAC;MACN;IACJ;EACJ;AACJ,CAAC,CAAC;AAAC"}
|
package/record/record.so.js
CHANGED
|
@@ -61,6 +61,40 @@ const createSearchRecordOperations = params => {
|
|
|
61
61
|
return [entries.map(entry => (0, _getFieldValues.getRecordFieldValues)(entry, _createAcoStorageOperations.baseFields)), meta];
|
|
62
62
|
});
|
|
63
63
|
},
|
|
64
|
+
listTags(params) {
|
|
65
|
+
return withModel(async model => {
|
|
66
|
+
const {
|
|
67
|
+
where
|
|
68
|
+
} = params;
|
|
69
|
+
const items = await cms.getUniqueFieldValues(model, {
|
|
70
|
+
where: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, where || {}), {}, {
|
|
71
|
+
latest: true
|
|
72
|
+
}),
|
|
73
|
+
fieldId: "tags"
|
|
74
|
+
});
|
|
75
|
+
const tags = Object.values(items.reduce((collection, item) => {
|
|
76
|
+
const tags = Array.isArray(item) ? item : [item];
|
|
77
|
+
for (const tag of tags) {
|
|
78
|
+
var _collection$tag;
|
|
79
|
+
collection[tag] = {
|
|
80
|
+
tag,
|
|
81
|
+
count: (((_collection$tag = collection[tag]) === null || _collection$tag === void 0 ? void 0 : _collection$tag.count) || 0) + 1
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
return collection;
|
|
85
|
+
}, {})).sort((a, b) => {
|
|
86
|
+
return a.tag < b.tag ? -1 : 1;
|
|
87
|
+
}).sort((a, b) => {
|
|
88
|
+
return a.count > b.count ? -1 : 1;
|
|
89
|
+
});
|
|
90
|
+
const meta = {
|
|
91
|
+
hasMoreItems: false,
|
|
92
|
+
totalCount: tags.length,
|
|
93
|
+
cursor: null
|
|
94
|
+
};
|
|
95
|
+
return [tags, meta];
|
|
96
|
+
});
|
|
97
|
+
},
|
|
64
98
|
createRecord({
|
|
65
99
|
data: SearchRecordData
|
|
66
100
|
}) {
|
package/record/record.so.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createSearchRecordOperations","params","cms","withModel","createOperationsWrapper","modelName","SEARCH_RECORD_MODEL_ID","getRecord","model","id","revisions","storageOperations","entries","getLatestByIds","ids","attachAcoRecordPrefix","length","WebinyError","record","getRecordFieldValues","baseFields","listRecords","sort","where","meta","listLatestEntries","createListSort","map","entry","
|
|
1
|
+
{"version":3,"names":["createSearchRecordOperations","params","cms","withModel","createOperationsWrapper","modelName","SEARCH_RECORD_MODEL_ID","getRecord","model","id","revisions","storageOperations","entries","getLatestByIds","ids","attachAcoRecordPrefix","length","WebinyError","record","getRecordFieldValues","baseFields","listRecords","sort","where","meta","listLatestEntries","createListSort","map","entry","listTags","items","getUniqueFieldValues","latest","fieldId","tags","Object","values","reduce","collection","item","Array","isArray","tag","count","a","b","hasMoreItems","totalCount","cursor","createRecord","data","SearchRecordData","rest","createEntry","updateRecord","original","input","updateEntry","deleteRecord","deleteEntry"],"sources":["record.so.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { SEARCH_RECORD_MODEL_ID } from \"./record.model\";\nimport { baseFields, CreateAcoStorageOperationsParams } from \"~/createAcoStorageOperations\";\nimport { createListSort } from \"~/utils/createListSort\";\nimport { createOperationsWrapper } from \"~/utils/createOperationsWrapper\";\nimport { getRecordFieldValues } from \"~/utils/getFieldValues\";\nimport { AcoSearchRecordStorageOperations, SearchRecordTag } from \"./record.types\";\nimport { CmsModel } from \"@webiny/api-headless-cms/types\";\nimport { attachAcoRecordPrefix } from \"~/utils/acoRecordId\";\n\nexport const createSearchRecordOperations = (\n params: CreateAcoStorageOperationsParams\n): AcoSearchRecordStorageOperations => {\n const { cms } = params;\n\n const { withModel } = createOperationsWrapper({\n ...params,\n modelName: SEARCH_RECORD_MODEL_ID\n });\n\n const getRecord = async (model: CmsModel, id: string) => {\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: [attachAcoRecordPrefix(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 getRecordFieldValues(record, baseFields);\n });\n },\n listRecords(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 => getRecordFieldValues(entry, baseFields)), meta];\n });\n },\n listTags(params) {\n return withModel(async model => {\n const { where } = params;\n\n const items = await cms.getUniqueFieldValues(model, {\n where: {\n ...(where || {}),\n latest: true\n },\n fieldId: \"tags\"\n });\n\n const tags = Object.values(\n items.reduce<Record<string, SearchRecordTag>>((collection, item) => {\n const tags = Array.isArray(item) ? item : [item];\n\n for (const tag of tags) {\n collection[tag] = {\n tag,\n count: (collection[tag]?.count || 0) + 1\n };\n }\n\n return collection;\n }, {})\n )\n .sort((a, b) => {\n return a.tag < b.tag ? -1 : 1;\n })\n .sort((a, b) => {\n return a.count > b.count ? -1 : 1;\n });\n\n const meta = {\n hasMoreItems: false,\n totalCount: tags.length,\n cursor: null\n };\n\n return [tags, meta];\n });\n },\n createRecord({ data: SearchRecordData }) {\n return withModel(async model => {\n const { tags = [], data = {}, ...rest } = SearchRecordData;\n const entry = await cms.createEntry(model, {\n tags,\n data,\n ...rest,\n id: attachAcoRecordPrefix(rest.id)\n });\n\n return getRecordFieldValues(entry, baseFields);\n });\n },\n updateRecord(this: AcoSearchRecordStorageOperations, { id, data }) {\n return withModel(async model => {\n const original = await this.getRecord({ id });\n\n const input = {\n ...original,\n ...data\n };\n\n const entry = await cms.updateEntry(\n model,\n attachAcoRecordPrefix(original.id),\n input\n );\n\n return getRecordFieldValues(entry, baseFields);\n });\n },\n deleteRecord({ id }) {\n return withModel(async model => {\n await cms.deleteEntry(model, attachAcoRecordPrefix(id));\n return true;\n });\n }\n };\n};\n"],"mappings":"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"}
|
package/record/record.types.d.ts
CHANGED
|
@@ -14,6 +14,10 @@ export interface SearchRecord<TData extends GenericSearchData = GenericSearchDat
|
|
|
14
14
|
data: TData;
|
|
15
15
|
tags: string[];
|
|
16
16
|
}
|
|
17
|
+
export declare type SearchRecordTag = {
|
|
18
|
+
tag: string;
|
|
19
|
+
count: number;
|
|
20
|
+
};
|
|
17
21
|
export interface ListSearchRecordsWhere {
|
|
18
22
|
type: string;
|
|
19
23
|
location?: {
|
|
@@ -41,10 +45,17 @@ export interface UpdateSearchRecordParams<TData extends GenericSearchData> {
|
|
|
41
45
|
export interface DeleteSearchRecordParams {
|
|
42
46
|
id: string;
|
|
43
47
|
}
|
|
48
|
+
export interface ListSearchRecordTagsWhere {
|
|
49
|
+
type: string;
|
|
50
|
+
}
|
|
51
|
+
export interface ListSearchRecordTagsParams {
|
|
52
|
+
where?: ListSearchRecordTagsWhere;
|
|
53
|
+
}
|
|
44
54
|
export interface StorageOperationsGetSearchRecordParams {
|
|
45
55
|
id: string;
|
|
46
56
|
}
|
|
47
57
|
export declare type StorageOperationsListSearchRecordsParams = ListSearchRecordsParams;
|
|
58
|
+
export declare type StorageOperationsListSearchRecordTagsParams = ListSearchRecordTagsParams;
|
|
48
59
|
export interface StorageOperationsCreateSearchRecordParams<TData extends GenericSearchData = GenericSearchData> {
|
|
49
60
|
data: CreateSearchRecordParams<TData>;
|
|
50
61
|
}
|
|
@@ -77,6 +88,7 @@ export interface OnSearchRecordAfterDeleteTopicParams<TData extends GenericSearc
|
|
|
77
88
|
export interface AcoSearchRecordCrud {
|
|
78
89
|
get<TData>(id: string): Promise<SearchRecord<TData>>;
|
|
79
90
|
list<TData>(params: ListSearchRecordsParams): Promise<[SearchRecord<TData>[], ListMeta]>;
|
|
91
|
+
listTags(params: ListSearchRecordTagsParams): Promise<[SearchRecordTag[], ListMeta]>;
|
|
80
92
|
create<TData>(data: CreateSearchRecordParams<TData>): Promise<SearchRecord<TData>>;
|
|
81
93
|
update<TData>(id: string, data: UpdateSearchRecordParams<TData>): Promise<SearchRecord<TData>>;
|
|
82
94
|
delete(id: string): Promise<Boolean>;
|
|
@@ -90,6 +102,7 @@ export interface AcoSearchRecordCrud {
|
|
|
90
102
|
export interface AcoSearchRecordStorageOperations {
|
|
91
103
|
getRecord<TData extends GenericSearchData = GenericSearchData>(params: StorageOperationsGetSearchRecordParams): Promise<SearchRecord<TData>>;
|
|
92
104
|
listRecords<TData extends GenericSearchData = GenericSearchData>(params: StorageOperationsListSearchRecordsParams): Promise<[SearchRecord<TData>[], ListMeta]>;
|
|
105
|
+
listTags(params: StorageOperationsListSearchRecordTagsParams): Promise<[SearchRecordTag[], ListMeta]>;
|
|
93
106
|
createRecord<TData extends GenericSearchData = GenericSearchData>(params: StorageOperationsCreateSearchRecordParams<TData>): Promise<SearchRecord<TData>>;
|
|
94
107
|
updateRecord<TData extends GenericSearchData = GenericSearchData>(params: StorageOperationsUpdateSearchRecordParams<TData>): Promise<SearchRecord<TData>>;
|
|
95
108
|
deleteRecord(params: StorageOperationsDeleteSearchRecordParams): Promise<boolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["record.types.ts"],"sourcesContent":["import { AcoBaseFields, ListMeta, ListSort } 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 tags: string[];\n}\n\nexport interface ListSearchRecordsWhere {\n type: string;\n location?: {\n folderId: string;\n };\n tags_in?: string[];\n tags_startsWith?: string;\n tags_not_startsWith?: string;\n}\n\nexport interface ListSearchRecordsParams {\n where?: ListSearchRecordsWhere;\n search?: string;\n sort?: ListSort;\n limit?: number;\n after?: string | null;\n}\n\nexport type CreateSearchRecordParams<TData> = Pick<\n SearchRecord<TData>,\n \"id\" | \"title\" | \"content\" | \"type\" | \"location\" | \"data\" | \"tags\"\n>;\n\nexport interface UpdateSearchRecordParams<TData extends GenericSearchData> {\n title?: string;\n content?: string;\n location?: Location;\n data?: TData;\n tags?: string[];\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, ListSort } 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 tags: string[];\n}\n\nexport type SearchRecordTag = {\n tag: string;\n count: number;\n};\n\nexport interface ListSearchRecordsWhere {\n type: string;\n location?: {\n folderId: string;\n };\n tags_in?: string[];\n tags_startsWith?: string;\n tags_not_startsWith?: string;\n}\n\nexport interface ListSearchRecordsParams {\n where?: ListSearchRecordsWhere;\n search?: string;\n sort?: ListSort;\n limit?: number;\n after?: string | null;\n}\n\nexport type CreateSearchRecordParams<TData> = Pick<\n SearchRecord<TData>,\n \"id\" | \"title\" | \"content\" | \"type\" | \"location\" | \"data\" | \"tags\"\n>;\n\nexport interface UpdateSearchRecordParams<TData extends GenericSearchData> {\n title?: string;\n content?: string;\n location?: Location;\n data?: TData;\n tags?: string[];\n}\n\nexport interface DeleteSearchRecordParams {\n id: string;\n}\n\nexport interface ListSearchRecordTagsWhere {\n type: string;\n}\n\nexport interface ListSearchRecordTagsParams {\n where?: ListSearchRecordTagsWhere;\n}\n\nexport interface StorageOperationsGetSearchRecordParams {\n id: string;\n}\n\nexport type StorageOperationsListSearchRecordsParams = ListSearchRecordsParams;\nexport type StorageOperationsListSearchRecordTagsParams = ListSearchRecordTagsParams;\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 listTags(params: ListSearchRecordTagsParams): Promise<[SearchRecordTag[], 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 listTags(\n params: StorageOperationsListSearchRecordTagsParams\n ): Promise<[SearchRecordTag[], 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,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.checkPermissions = void 0;
|
|
7
|
+
var _apiSecurity = require("@webiny/api-security");
|
|
8
|
+
const checkPermissions = context => {
|
|
9
|
+
const identity = context.security.getIdentity();
|
|
10
|
+
if (!identity) {
|
|
11
|
+
throw new _apiSecurity.NotAuthorizedError();
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
exports.checkPermissions = checkPermissions;
|