@webiny/api-aco 5.36.2 → 5.37.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/apps/AcoApp.d.ts +16 -0
- package/apps/AcoApp.js +108 -0
- package/apps/AcoApp.js.map +1 -0
- package/apps/AcoApps.d.ts +10 -0
- package/apps/AcoApps.js +76 -0
- package/apps/AcoApps.js.map +1 -0
- package/apps/app.gql.d.ts +3 -0
- package/apps/app.gql.js +58 -0
- package/apps/app.gql.js.map +1 -0
- package/apps/index.d.ts +2 -0
- package/apps/index.js +27 -0
- package/apps/index.js.map +1 -0
- package/createAcoContext.js +50 -13
- package/createAcoContext.js.map +1 -1
- package/createAcoGraphQL.d.ts +2 -2
- package/createAcoGraphQL.js +34 -5
- package/createAcoGraphQL.js.map +1 -1
- package/createAcoHooks.js.map +1 -1
- package/createAcoModels.js +0 -15
- package/createAcoModels.js.map +1 -1
- package/createAcoStorageOperations.js.map +1 -1
- package/{createAcoFields.d.ts → fields/index.d.ts} +1 -1
- package/fields/index.js +12 -0
- package/fields/index.js.map +1 -0
- package/fields/location.d.ts +2 -0
- package/fields/location.js +44 -0
- package/fields/location.js.map +1 -0
- package/folder/folder.crud.js +18 -0
- package/folder/folder.crud.js.map +1 -1
- package/folder/folder.gql.js +1 -1
- package/folder/folder.gql.js.map +1 -1
- package/folder/folder.model.js +0 -18
- package/folder/folder.model.js.map +1 -1
- package/folder/folder.so.js.map +1 -1
- package/folder/folder.types.d.ts +8 -2
- package/folder/folder.types.js.map +1 -1
- package/folder/onFolderBeforeDelete.hook.js +21 -9
- package/folder/onFolderBeforeDelete.hook.js.map +1 -1
- package/index.d.ts +3 -1
- package/index.js +31 -3
- package/index.js.map +1 -1
- package/package.json +29 -27
- package/plugins/AcoAppModifierPlugin.d.ts +43 -0
- package/plugins/AcoAppModifierPlugin.js +59 -0
- package/plugins/AcoAppModifierPlugin.js.map +1 -0
- package/plugins/AcoAppRegisterPlugin.d.ts +8 -0
- package/plugins/AcoAppRegisterPlugin.js +22 -0
- package/plugins/AcoAppRegisterPlugin.js.map +1 -0
- package/plugins/index.d.ts +2 -0
- package/plugins/index.js +27 -0
- package/plugins/index.js.map +1 -0
- package/record/graphql/createAppResolvers.d.ts +14 -0
- package/record/graphql/createAppResolvers.js +108 -0
- package/record/graphql/createAppResolvers.js.map +1 -0
- package/record/graphql/createAppSchema.d.ts +9 -0
- package/record/graphql/createAppSchema.js +142 -0
- package/record/graphql/createAppSchema.js.map +1 -0
- package/record/record.crud.js +45 -14
- package/record/record.crud.js.map +1 -1
- package/record/record.gql.d.ts +8 -3
- package/record/record.gql.js +36 -182
- package/record/record.gql.js.map +1 -1
- package/record/record.model.d.ts +7 -1
- package/record/record.model.js +34 -10
- package/record/record.model.js.map +1 -1
- package/record/record.so.js +55 -44
- package/record/record.so.js.map +1 -1
- package/record/record.types.d.ts +49 -15
- package/record/record.types.js.map +1 -1
- package/types.d.ts +45 -3
- package/types.js +10 -4
- package/types.js.map +1 -1
- package/utils/acoRecordId.js.map +1 -1
- package/utils/checkPermissions.js.map +1 -1
- package/utils/createListSort.js.map +1 -1
- package/utils/createModelField.js.map +1 -1
- package/utils/createOperationsWrapper.js.map +1 -1
- package/utils/fieldResolver.js.map +1 -1
- package/utils/getFieldValues.d.ts +2 -2
- package/utils/getFieldValues.js +1 -1
- package/utils/getFieldValues.js.map +1 -1
- package/utils/getFolderAndItsAncestors.d.ts +7 -0
- package/utils/getFolderAndItsAncestors.js +48 -0
- package/utils/getFolderAndItsAncestors.js.map +1 -0
- package/utils/isInstallationPending.js.map +1 -1
- package/utils/modelFactory.js.map +1 -1
- package/utils/resolve.d.ts +2 -1
- package/utils/resolve.js +11 -2
- package/utils/resolve.js.map +1 -1
- package/createAcoCrud.d.ts +0 -2
- package/createAcoCrud.js +0 -17
- package/createAcoCrud.js.map +0 -1
- package/createAcoFields.js +0 -40
- package/createAcoFields.js.map +0 -1
package/record/record.gql.js
CHANGED
|
@@ -3,185 +3,39 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
id: String!
|
|
43
|
-
type: String!
|
|
44
|
-
title: String!
|
|
45
|
-
content: String
|
|
46
|
-
location: SearchLocationInput!
|
|
47
|
-
data: JSON
|
|
48
|
-
tags: [String!]
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
input SearchRecordUpdateInput {
|
|
52
|
-
title: String
|
|
53
|
-
content: String
|
|
54
|
-
location: SearchLocationInput
|
|
55
|
-
data: JSON
|
|
56
|
-
tags: [String!]
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
input BasicSearchRecordListWhereInput {
|
|
60
|
-
tags_in: [String!]
|
|
61
|
-
tags_startsWith: String
|
|
62
|
-
tags_not_startsWith: String
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
input SearchRecordListWhereInput {
|
|
66
|
-
type: String!
|
|
67
|
-
location: SearchLocationInput
|
|
68
|
-
tags_in: [String!]
|
|
69
|
-
tags_startsWith: String
|
|
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!]
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
type SearchRecordResponse {
|
|
87
|
-
data: SearchRecord
|
|
88
|
-
error: AcoError
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
type SearchRecordListResponse {
|
|
92
|
-
data: [SearchRecord]
|
|
93
|
-
error: AcoError
|
|
94
|
-
meta: AcoMeta
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
type SearchRecordTagListResponse {
|
|
98
|
-
data: [TagItem!]
|
|
99
|
-
error: AcoError
|
|
100
|
-
meta: AcoMeta
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
extend type SearchQuery {
|
|
104
|
-
getRecord(id: ID!): SearchRecordResponse
|
|
105
|
-
listRecords(
|
|
106
|
-
where: SearchRecordListWhereInput
|
|
107
|
-
search: String
|
|
108
|
-
limit: Int
|
|
109
|
-
after: String
|
|
110
|
-
sort: AcoSort
|
|
111
|
-
): SearchRecordListResponse
|
|
112
|
-
listTags(where: SearchRecordTagListWhereInput): SearchRecordTagListResponse
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
extend type SearchMutation {
|
|
116
|
-
createRecord(data: SearchRecordCreateInput!): SearchRecordResponse
|
|
117
|
-
updateRecord(id: ID!, data: SearchRecordUpdateInput!): SearchRecordResponse
|
|
118
|
-
deleteRecord(id: ID!): AcoBooleanResponse
|
|
119
|
-
}
|
|
120
|
-
`,
|
|
121
|
-
resolvers: {
|
|
122
|
-
SearchRecord: {
|
|
123
|
-
id: async parent => {
|
|
124
|
-
const {
|
|
125
|
-
id
|
|
126
|
-
} = (0, _utils.parseIdentifier)(parent.id);
|
|
127
|
-
return (0, _acoRecordId.removeAcoRecordPrefix)(id);
|
|
128
|
-
}
|
|
129
|
-
},
|
|
130
|
-
SearchQuery: {
|
|
131
|
-
getRecord: async (_, {
|
|
132
|
-
id
|
|
133
|
-
}, context) => {
|
|
134
|
-
return (0, _resolve.resolve)(() => {
|
|
135
|
-
(0, _checkPermissions.checkPermissions)(context);
|
|
136
|
-
return context.aco.search.get(id);
|
|
137
|
-
});
|
|
138
|
-
},
|
|
139
|
-
listRecords: async (_, args, context) => {
|
|
140
|
-
try {
|
|
141
|
-
await (0, _checkPermissions.checkPermissions)(context);
|
|
142
|
-
const [entries, meta] = await context.aco.search.list(args);
|
|
143
|
-
return new _responses.ListResponse(entries, meta);
|
|
144
|
-
} catch (e) {
|
|
145
|
-
return new _responses.ErrorResponse(e);
|
|
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
|
-
}
|
|
156
|
-
}
|
|
157
|
-
},
|
|
158
|
-
SearchMutation: {
|
|
159
|
-
createRecord: async (_, {
|
|
160
|
-
data
|
|
161
|
-
}, context) => {
|
|
162
|
-
return (0, _resolve.resolve)(() => {
|
|
163
|
-
(0, _checkPermissions.checkPermissions)(context);
|
|
164
|
-
return context.aco.search.create(data);
|
|
165
|
-
});
|
|
166
|
-
},
|
|
167
|
-
updateRecord: async (_, {
|
|
168
|
-
id,
|
|
169
|
-
data
|
|
170
|
-
}, context) => {
|
|
171
|
-
return (0, _resolve.resolve)(() => {
|
|
172
|
-
(0, _checkPermissions.checkPermissions)(context);
|
|
173
|
-
return context.aco.search.update(id, data);
|
|
174
|
-
});
|
|
175
|
-
},
|
|
176
|
-
deleteRecord: async (_, {
|
|
177
|
-
id
|
|
178
|
-
}, context) => {
|
|
179
|
-
return (0, _resolve.resolve)(() => {
|
|
180
|
-
(0, _checkPermissions.checkPermissions)(context);
|
|
181
|
-
return context.aco.search.delete(id);
|
|
182
|
-
});
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
});
|
|
187
|
-
exports.searchRecordSchema = searchRecordSchema;
|
|
6
|
+
exports.createSchema = void 0;
|
|
7
|
+
var _handlerGraphql = require("@webiny/handler-graphql");
|
|
8
|
+
var _createAppSchema = require("./graphql/createAppSchema");
|
|
9
|
+
var _createAppResolvers = require("./graphql/createAppResolvers");
|
|
10
|
+
const createSchema = async params => {
|
|
11
|
+
const {
|
|
12
|
+
context,
|
|
13
|
+
app
|
|
14
|
+
} = params;
|
|
15
|
+
const plugins = context.plugins.byType("cms-model-field-to-graphql").reduce((fields, plugin) => {
|
|
16
|
+
fields[plugin.fieldType] = plugin;
|
|
17
|
+
return fields;
|
|
18
|
+
}, {});
|
|
19
|
+
const models = await context.security.withoutAuthorization(async () => {
|
|
20
|
+
return (await context.cms.listModels()).filter(model => {
|
|
21
|
+
return !model.isPrivate;
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
return context.benchmark.measure(`aco.schema.generate.${app.name}`, async () => {
|
|
25
|
+
const plugin = new _handlerGraphql.GraphQLSchemaPlugin({
|
|
26
|
+
typeDefs: (0, _createAppSchema.createAppSchema)({
|
|
27
|
+
models,
|
|
28
|
+
app,
|
|
29
|
+
plugins
|
|
30
|
+
}),
|
|
31
|
+
resolvers: (0, _createAppResolvers.createAppResolvers)({
|
|
32
|
+
models,
|
|
33
|
+
app,
|
|
34
|
+
plugins
|
|
35
|
+
})
|
|
36
|
+
});
|
|
37
|
+
plugin.name = `aco.graphql.appSchema.searchRecord.${app.name}`;
|
|
38
|
+
return plugin;
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
exports.createSchema = createSchema;
|
package/record/record.gql.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["_handlerGraphql","require","_createAppSchema","_createAppResolvers","createSchema","params","context","app","plugins","byType","reduce","fields","plugin","fieldType","models","security","withoutAuthorization","cms","listModels","filter","model","isPrivate","benchmark","measure","name","GraphQLSchemaPlugin","typeDefs","createAppSchema","resolvers","createAppResolvers","exports"],"sources":["record.gql.ts"],"sourcesContent":["import { AcoContext, IAcoApp } from \"~/types\";\nimport { CmsFieldTypePlugins, CmsModelFieldToGraphQLPlugin } from \"@webiny/api-headless-cms/types\";\nimport { GraphQLSchemaPlugin } from \"@webiny/handler-graphql\";\nimport { createAppSchema } from \"./graphql/createAppSchema\";\nimport { createAppResolvers } from \"./graphql/createAppResolvers\";\n\ninterface Params {\n context: AcoContext;\n app: IAcoApp;\n}\n\nexport const createSchema = async (params: Params) => {\n const { context, app } = params;\n const plugins = context.plugins\n .byType<CmsModelFieldToGraphQLPlugin>(\"cms-model-field-to-graphql\")\n .reduce<CmsFieldTypePlugins>((fields, plugin) => {\n fields[plugin.fieldType] = plugin;\n return fields;\n }, {});\n const models = await context.security.withoutAuthorization(async () => {\n return (await context.cms.listModels()).filter(model => {\n return !model.isPrivate;\n });\n });\n\n return context.benchmark.measure(`aco.schema.generate.${app.name}`, async () => {\n const plugin = new GraphQLSchemaPlugin({\n typeDefs: createAppSchema({\n models,\n app,\n plugins\n }),\n resolvers: createAppResolvers({\n models,\n app,\n plugins\n })\n });\n plugin.name = `aco.graphql.appSchema.searchRecord.${app.name}`;\n return plugin;\n });\n};\n"],"mappings":";;;;;;AAEA,IAAAA,eAAA,GAAAC,OAAA;AACA,IAAAC,gBAAA,GAAAD,OAAA;AACA,IAAAE,mBAAA,GAAAF,OAAA;AAOO,MAAMG,YAAY,GAAG,MAAOC,MAAc,IAAK;EAClD,MAAM;IAAEC,OAAO;IAAEC;EAAI,CAAC,GAAGF,MAAM;EAC/B,MAAMG,OAAO,GAAGF,OAAO,CAACE,OAAO,CAC1BC,MAAM,CAA+B,4BAA4B,CAAC,CAClEC,MAAM,CAAsB,CAACC,MAAM,EAAEC,MAAM,KAAK;IAC7CD,MAAM,CAACC,MAAM,CAACC,SAAS,CAAC,GAAGD,MAAM;IACjC,OAAOD,MAAM;EACjB,CAAC,EAAE,CAAC,CAAC,CAAC;EACV,MAAMG,MAAM,GAAG,MAAMR,OAAO,CAACS,QAAQ,CAACC,oBAAoB,CAAC,YAAY;IACnE,OAAO,CAAC,MAAMV,OAAO,CAACW,GAAG,CAACC,UAAU,CAAC,CAAC,EAAEC,MAAM,CAACC,KAAK,IAAI;MACpD,OAAO,CAACA,KAAK,CAACC,SAAS;IAC3B,CAAC,CAAC;EACN,CAAC,CAAC;EAEF,OAAOf,OAAO,CAACgB,SAAS,CAACC,OAAO,CAAE,uBAAsBhB,GAAG,CAACiB,IAAK,EAAC,EAAE,YAAY;IAC5E,MAAMZ,MAAM,GAAG,IAAIa,mCAAmB,CAAC;MACnCC,QAAQ,EAAE,IAAAC,gCAAe,EAAC;QACtBb,MAAM;QACNP,GAAG;QACHC;MACJ,CAAC,CAAC;MACFoB,SAAS,EAAE,IAAAC,sCAAkB,EAAC;QAC1Bf,MAAM;QACNP,GAAG;QACHC;MACJ,CAAC;IACL,CAAC,CAAC;IACFI,MAAM,CAACY,IAAI,GAAI,sCAAqCjB,GAAG,CAACiB,IAAK,EAAC;IAC9D,OAAOZ,MAAM;EACjB,CAAC,CAAC;AACN,CAAC;AAACkB,OAAA,CAAA1B,YAAA,GAAAA,YAAA"}
|
package/record/record.model.d.ts
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
|
+
import { CmsModelField } from "@webiny/api-headless-cms/types";
|
|
1
2
|
import { CmsPrivateModelFull } from "@webiny/api-headless-cms";
|
|
2
3
|
export declare type SearchRecordModelDefinition = Omit<CmsPrivateModelFull, "noValidate" | "group">;
|
|
3
4
|
export declare const SEARCH_RECORD_MODEL_ID = "acoSearchRecord";
|
|
4
|
-
|
|
5
|
+
interface CreateSearchModelDefinitionParams {
|
|
6
|
+
fields?: CmsModelField[];
|
|
7
|
+
}
|
|
8
|
+
export declare const DEFAULT_FIELDS: string[];
|
|
9
|
+
export declare const createSearchModelDefinition: (params?: CreateSearchModelDefinitionParams) => SearchRecordModelDefinition;
|
|
10
|
+
export {};
|
package/record/record.model.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.createSearchModelDefinition = exports.SEARCH_RECORD_MODEL_ID = void 0;
|
|
6
|
+
exports.createSearchModelDefinition = exports.SEARCH_RECORD_MODEL_ID = exports.DEFAULT_FIELDS = void 0;
|
|
7
7
|
var _createModelField = require("../utils/createModelField");
|
|
8
8
|
const typeField = () => (0, _createModelField.createModelField)({
|
|
9
9
|
label: "Type",
|
|
@@ -15,7 +15,11 @@ const typeField = () => (0, _createModelField.createModelField)({
|
|
|
15
15
|
});
|
|
16
16
|
const titleField = () => (0, _createModelField.createModelField)({
|
|
17
17
|
label: "Title",
|
|
18
|
-
type: "text"
|
|
18
|
+
type: "text",
|
|
19
|
+
validation: [{
|
|
20
|
+
name: "required",
|
|
21
|
+
message: "Value is required."
|
|
22
|
+
}]
|
|
19
23
|
});
|
|
20
24
|
const contentField = () => (0, _createModelField.createModelField)({
|
|
21
25
|
label: "Content",
|
|
@@ -25,6 +29,10 @@ const locationField = fields => (0, _createModelField.createModelField)({
|
|
|
25
29
|
label: "Location",
|
|
26
30
|
type: "object",
|
|
27
31
|
multipleValues: false,
|
|
32
|
+
validation: [{
|
|
33
|
+
name: "required",
|
|
34
|
+
message: "The location field must be populated."
|
|
35
|
+
}],
|
|
28
36
|
settings: {
|
|
29
37
|
fields
|
|
30
38
|
}
|
|
@@ -37,24 +45,40 @@ const locationFolderIdField = () => (0, _createModelField.createModelField)({
|
|
|
37
45
|
message: "Value is required."
|
|
38
46
|
}]
|
|
39
47
|
});
|
|
40
|
-
const dataField =
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
48
|
+
const dataField = fields => {
|
|
49
|
+
return (0, _createModelField.createModelField)({
|
|
50
|
+
label: "Data",
|
|
51
|
+
type: "object",
|
|
52
|
+
multipleValues: false,
|
|
53
|
+
validation: [{
|
|
54
|
+
name: "required",
|
|
55
|
+
message: "The data field must be populated."
|
|
56
|
+
}],
|
|
57
|
+
settings: {
|
|
58
|
+
fields
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
};
|
|
44
62
|
const tagsField = () => (0, _createModelField.createModelField)({
|
|
45
63
|
label: "Tags",
|
|
46
64
|
type: "text",
|
|
47
|
-
multipleValues: true
|
|
65
|
+
multipleValues: true,
|
|
66
|
+
validation: [{
|
|
67
|
+
name: "required",
|
|
68
|
+
message: "The tags field must be populated."
|
|
69
|
+
}]
|
|
48
70
|
});
|
|
49
71
|
const SEARCH_RECORD_MODEL_ID = "acoSearchRecord";
|
|
50
72
|
exports.SEARCH_RECORD_MODEL_ID = SEARCH_RECORD_MODEL_ID;
|
|
51
|
-
const
|
|
73
|
+
const DEFAULT_FIELDS = ["type", "title", "content", "location", "data", "tags"];
|
|
74
|
+
exports.DEFAULT_FIELDS = DEFAULT_FIELDS;
|
|
75
|
+
const createSearchModelDefinition = params => {
|
|
52
76
|
return {
|
|
53
77
|
name: "ACO - Search Record",
|
|
54
78
|
modelId: SEARCH_RECORD_MODEL_ID,
|
|
55
79
|
titleFieldId: "title",
|
|
56
|
-
layout:
|
|
57
|
-
fields: [typeField(), titleField(), contentField(), locationField([locationFolderIdField()]), dataField(), tagsField()],
|
|
80
|
+
layout: DEFAULT_FIELDS.map(field => [field]),
|
|
81
|
+
fields: [typeField(), titleField(), contentField(), locationField([locationFolderIdField()]), dataField(params === null || params === void 0 ? void 0 : params.fields), tagsField()],
|
|
58
82
|
description: "ACO - Search record model",
|
|
59
83
|
isPrivate: true
|
|
60
84
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["typeField","createModelField","label","type","validation","name","message","titleField","contentField","locationField","fields","multipleValues","settings","locationFolderIdField","dataField","tagsField","SEARCH_RECORD_MODEL_ID","createSearchModelDefinition","modelId","titleFieldId","layout","description","isPrivate"],"sources":["record.model.ts"],"sourcesContent":["import { CmsModelField } from \"@webiny/api-headless-cms/types\";\nimport { createModelField } from \"~/utils/createModelField\";\nimport { CmsPrivateModelFull } from \"@webiny/api-headless-cms\";\n\nexport type SearchRecordModelDefinition = Omit<CmsPrivateModelFull, \"noValidate\" | \"group\">;\n\nconst typeField = () =>\n createModelField({\n label: \"Type\",\n type: \"text\",\n validation: [\n {\n name: \"required\",\n message: \"Value is required.\"\n }\n ]\n });\n\nconst titleField = () =>\n createModelField({\n label: \"Title\",\n type: \"text\"\n });\n\nconst contentField = () =>\n createModelField({\n label: \"Content\",\n type: \"text\"\n });\n\nconst locationField = (fields: CmsModelField[]) =>\n createModelField({\n label: \"Location\",\n type: \"object\",\n multipleValues: false,\n
|
|
1
|
+
{"version":3,"names":["_createModelField","require","typeField","createModelField","label","type","validation","name","message","titleField","contentField","locationField","fields","multipleValues","settings","locationFolderIdField","dataField","tagsField","SEARCH_RECORD_MODEL_ID","exports","DEFAULT_FIELDS","createSearchModelDefinition","params","modelId","titleFieldId","layout","map","field","description","isPrivate"],"sources":["record.model.ts"],"sourcesContent":["import { CmsModelField } from \"@webiny/api-headless-cms/types\";\nimport { createModelField } from \"~/utils/createModelField\";\nimport { CmsPrivateModelFull } from \"@webiny/api-headless-cms\";\n\nexport type SearchRecordModelDefinition = Omit<CmsPrivateModelFull, \"noValidate\" | \"group\">;\n\nconst typeField = () =>\n createModelField({\n label: \"Type\",\n type: \"text\",\n validation: [\n {\n name: \"required\",\n message: \"Value is required.\"\n }\n ]\n });\n\nconst titleField = () =>\n createModelField({\n label: \"Title\",\n type: \"text\",\n validation: [\n {\n name: \"required\",\n message: \"Value is required.\"\n }\n ]\n });\n\nconst contentField = () =>\n createModelField({\n label: \"Content\",\n type: \"text\"\n });\n\nconst locationField = (fields: CmsModelField[]) =>\n createModelField({\n label: \"Location\",\n type: \"object\",\n multipleValues: false,\n validation: [\n {\n name: \"required\",\n message: \"The location field must be populated.\"\n }\n ],\n settings: {\n fields\n }\n });\n\nconst locationFolderIdField = () =>\n createModelField({\n label: \"Folder Id\",\n type: \"text\",\n validation: [\n {\n name: \"required\",\n message: \"Value is required.\"\n }\n ]\n });\n\nconst dataField = (fields?: CmsModelField[]) => {\n return createModelField({\n label: \"Data\",\n type: \"object\",\n multipleValues: false,\n validation: [\n {\n name: \"required\",\n message: \"The data field must be populated.\"\n }\n ],\n settings: {\n fields\n }\n });\n};\n\nconst tagsField = () =>\n createModelField({\n label: \"Tags\",\n type: \"text\",\n multipleValues: true,\n validation: [\n {\n name: \"required\",\n message: \"The tags field must be populated.\"\n }\n ]\n });\n\nexport const SEARCH_RECORD_MODEL_ID = \"acoSearchRecord\";\n\ninterface CreateSearchModelDefinitionParams {\n fields?: CmsModelField[];\n}\n\nexport const DEFAULT_FIELDS = [\"type\", \"title\", \"content\", \"location\", \"data\", \"tags\"];\n\nexport const createSearchModelDefinition = (\n params?: CreateSearchModelDefinitionParams\n): SearchRecordModelDefinition => {\n return {\n name: \"ACO - Search Record\",\n modelId: SEARCH_RECORD_MODEL_ID,\n titleFieldId: \"title\",\n layout: DEFAULT_FIELDS.map(field => [field]),\n fields: [\n typeField(),\n titleField(),\n contentField(),\n locationField([locationFolderIdField()]),\n dataField(params?.fields),\n tagsField()\n ],\n description: \"ACO - Search record model\",\n isPrivate: true\n };\n};\n"],"mappings":"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"}
|
package/record/record.so.js
CHANGED
|
@@ -8,22 +8,15 @@ exports.createSearchRecordOperations = void 0;
|
|
|
8
8
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
9
9
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
10
10
|
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
11
|
-
var _record = require("./record.model");
|
|
12
|
-
var _createAcoStorageOperations = require("../createAcoStorageOperations");
|
|
13
|
-
var _createListSort = require("../utils/createListSort");
|
|
14
|
-
var _createOperationsWrapper = require("../utils/createOperationsWrapper");
|
|
15
11
|
var _getFieldValues = require("../utils/getFieldValues");
|
|
16
12
|
var _acoRecordId = require("../utils/acoRecordId");
|
|
13
|
+
var _record = require("./record.model");
|
|
17
14
|
const _excluded = ["tags", "data"];
|
|
18
15
|
const createSearchRecordOperations = params => {
|
|
19
16
|
const {
|
|
20
|
-
cms
|
|
17
|
+
cms,
|
|
18
|
+
security
|
|
21
19
|
} = params;
|
|
22
|
-
const {
|
|
23
|
-
withModel
|
|
24
|
-
} = (0, _createOperationsWrapper.createOperationsWrapper)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, params), {}, {
|
|
25
|
-
modelName: _record.SEARCH_RECORD_MODEL_ID
|
|
26
|
-
}));
|
|
27
20
|
const getRecord = async (model, id) => {
|
|
28
21
|
/**
|
|
29
22
|
* The record "id" has been passed by the original entry.
|
|
@@ -40,29 +33,29 @@ const createSearchRecordOperations = params => {
|
|
|
40
33
|
return revisions[0];
|
|
41
34
|
};
|
|
42
35
|
return {
|
|
43
|
-
async getRecord({
|
|
36
|
+
async getRecord(model, {
|
|
44
37
|
id
|
|
45
38
|
}) {
|
|
46
|
-
return
|
|
39
|
+
return security.withoutAuthorization(async () => {
|
|
47
40
|
const record = await getRecord(model, id);
|
|
48
|
-
return (0, _getFieldValues.getRecordFieldValues)(record
|
|
41
|
+
return (0, _getFieldValues.getRecordFieldValues)(record);
|
|
49
42
|
});
|
|
50
43
|
},
|
|
51
|
-
listRecords(params) {
|
|
52
|
-
return
|
|
44
|
+
listRecords(model, params) {
|
|
45
|
+
return security.withoutAuthorization(async () => {
|
|
53
46
|
const {
|
|
54
47
|
sort,
|
|
55
48
|
where
|
|
56
49
|
} = params;
|
|
57
50
|
const [entries, meta] = await cms.listLatestEntries(model, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, params), {}, {
|
|
58
|
-
sort
|
|
51
|
+
sort,
|
|
59
52
|
where: (0, _objectSpread2.default)({}, where || {})
|
|
60
53
|
}));
|
|
61
|
-
return [entries.map(entry => (0, _getFieldValues.getRecordFieldValues)(entry
|
|
54
|
+
return [entries.map(entry => (0, _getFieldValues.getRecordFieldValues)(entry)), meta];
|
|
62
55
|
});
|
|
63
56
|
},
|
|
64
|
-
listTags(params) {
|
|
65
|
-
return
|
|
57
|
+
listTags(model, params) {
|
|
58
|
+
return security.withoutAuthorization(async () => {
|
|
66
59
|
const {
|
|
67
60
|
where
|
|
68
61
|
} = params;
|
|
@@ -72,33 +65,24 @@ const createSearchRecordOperations = params => {
|
|
|
72
65
|
}),
|
|
73
66
|
fieldId: "tags"
|
|
74
67
|
});
|
|
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
68
|
const meta = {
|
|
91
69
|
hasMoreItems: false,
|
|
92
|
-
totalCount:
|
|
70
|
+
totalCount: items.length,
|
|
93
71
|
cursor: null
|
|
94
72
|
};
|
|
73
|
+
const tags = items.map(item => {
|
|
74
|
+
return {
|
|
75
|
+
tag: item.value,
|
|
76
|
+
count: item.count
|
|
77
|
+
};
|
|
78
|
+
});
|
|
95
79
|
return [tags, meta];
|
|
96
80
|
});
|
|
97
81
|
},
|
|
98
|
-
createRecord({
|
|
82
|
+
createRecord(model, {
|
|
99
83
|
data: SearchRecordData
|
|
100
84
|
}) {
|
|
101
|
-
return
|
|
85
|
+
return security.withoutAuthorization(async () => {
|
|
102
86
|
const {
|
|
103
87
|
tags = [],
|
|
104
88
|
data = {}
|
|
@@ -110,26 +94,53 @@ const createSearchRecordOperations = params => {
|
|
|
110
94
|
}, rest), {}, {
|
|
111
95
|
id: (0, _acoRecordId.attachAcoRecordPrefix)(rest.id)
|
|
112
96
|
}));
|
|
113
|
-
return (0, _getFieldValues.getRecordFieldValues)(entry
|
|
97
|
+
return (0, _getFieldValues.getRecordFieldValues)(entry);
|
|
114
98
|
});
|
|
115
99
|
},
|
|
116
|
-
updateRecord({
|
|
100
|
+
updateRecord(model, {
|
|
117
101
|
id,
|
|
118
102
|
data
|
|
119
103
|
}) {
|
|
120
|
-
return
|
|
121
|
-
const original = await this.getRecord({
|
|
104
|
+
return security.withoutAuthorization(async () => {
|
|
105
|
+
const original = await this.getRecord(model, {
|
|
122
106
|
id
|
|
123
107
|
});
|
|
124
108
|
const input = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, original), data);
|
|
125
109
|
const entry = await cms.updateEntry(model, (0, _acoRecordId.attachAcoRecordPrefix)(original.id), input);
|
|
126
|
-
return (0, _getFieldValues.getRecordFieldValues)(entry
|
|
110
|
+
return (0, _getFieldValues.getRecordFieldValues)(entry);
|
|
111
|
+
});
|
|
112
|
+
},
|
|
113
|
+
moveRecord(model, params) {
|
|
114
|
+
const {
|
|
115
|
+
id,
|
|
116
|
+
folderId
|
|
117
|
+
} = params;
|
|
118
|
+
return security.withoutAuthorization(async () => {
|
|
119
|
+
const original = await this.getRecord(model, {
|
|
120
|
+
id
|
|
121
|
+
});
|
|
122
|
+
const input = {
|
|
123
|
+
wbyAco_location: {
|
|
124
|
+
folderId
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
/**
|
|
128
|
+
* We only apply the location to the search record model as we do not want to override the users data.
|
|
129
|
+
*/
|
|
130
|
+
const lookFor = `${_record.SEARCH_RECORD_MODEL_ID}-`;
|
|
131
|
+
if (model.modelId.substring(0, lookFor.length) === lookFor) {
|
|
132
|
+
input.location = {
|
|
133
|
+
folderId
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
await cms.updateEntry(model, (0, _acoRecordId.attachAcoRecordPrefix)(original.id), input);
|
|
137
|
+
return true;
|
|
127
138
|
});
|
|
128
139
|
},
|
|
129
|
-
deleteRecord({
|
|
140
|
+
deleteRecord(model, {
|
|
130
141
|
id
|
|
131
142
|
}) {
|
|
132
|
-
return
|
|
143
|
+
return security.withoutAuthorization(async () => {
|
|
133
144
|
await cms.deleteEntry(model, (0, _acoRecordId.attachAcoRecordPrefix)(id));
|
|
134
145
|
return true;
|
|
135
146
|
});
|
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","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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"}
|
|
1
|
+
{"version":3,"names":["_error","_interopRequireDefault","require","_getFieldValues","_acoRecordId","_record","_excluded","createSearchRecordOperations","params","cms","security","getRecord","model","id","revisions","storageOperations","entries","getLatestByIds","ids","attachAcoRecordPrefix","length","WebinyError","withoutAuthorization","record","getRecordFieldValues","listRecords","sort","where","meta","listLatestEntries","_objectSpread2","default","map","entry","listTags","items","getUniqueFieldValues","latest","fieldId","hasMoreItems","totalCount","cursor","tags","item","tag","value","count","createRecord","data","SearchRecordData","rest","_objectWithoutProperties2","createEntry","updateRecord","original","input","updateEntry","moveRecord","folderId","wbyAco_location","lookFor","SEARCH_RECORD_MODEL_ID","modelId","substring","location","deleteRecord","deleteEntry","exports"],"sources":["record.so.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { CreateAcoStorageOperationsParams } from \"~/createAcoStorageOperations\";\nimport { getRecordFieldValues } from \"~/utils/getFieldValues\";\nimport { AcoSearchRecordStorageOperations } from \"./record.types\";\nimport { CmsModel, UpdateCmsEntryInput } from \"@webiny/api-headless-cms/types\";\nimport { attachAcoRecordPrefix } from \"~/utils/acoRecordId\";\nimport { SEARCH_RECORD_MODEL_ID } from \"~/record/record.model\";\n\nexport const createSearchRecordOperations = (\n params: CreateAcoStorageOperationsParams\n): AcoSearchRecordStorageOperations => {\n const { cms, security } = params;\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(model, { id }) {\n return security.withoutAuthorization(async () => {\n const record = await getRecord(model, id);\n return getRecordFieldValues(record);\n });\n },\n listRecords(model, params) {\n return security.withoutAuthorization(async () => {\n const { sort, where } = params;\n\n const [entries, meta] = await cms.listLatestEntries(model, {\n ...params,\n sort,\n where: {\n ...(where || {})\n }\n });\n\n return [entries.map(entry => getRecordFieldValues(entry)), meta];\n });\n },\n listTags(model, params) {\n return security.withoutAuthorization(async () => {\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 meta = {\n hasMoreItems: false,\n totalCount: items.length,\n cursor: null\n };\n\n const tags = items.map(item => {\n return {\n tag: item.value,\n count: item.count\n };\n });\n\n return [tags, meta];\n });\n },\n createRecord(model, { data: SearchRecordData }) {\n return security.withoutAuthorization(async () => {\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);\n });\n },\n updateRecord(this: AcoSearchRecordStorageOperations, model, { id, data }) {\n return security.withoutAuthorization(async () => {\n const original = await this.getRecord(model, { 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);\n });\n },\n moveRecord(this: AcoSearchRecordStorageOperations, model, params) {\n const { id, folderId } = params;\n return security.withoutAuthorization(async () => {\n const original = await this.getRecord(model, { id });\n\n const input: UpdateCmsEntryInput = {\n wbyAco_location: {\n folderId\n }\n };\n /**\n * We only apply the location to the search record model as we do not want to override the users data.\n */\n const lookFor = `${SEARCH_RECORD_MODEL_ID}-`;\n if (model.modelId.substring(0, lookFor.length) === lookFor) {\n input.location = {\n folderId\n };\n }\n\n await cms.updateEntry(model, attachAcoRecordPrefix(original.id), input);\n\n return true;\n });\n },\n deleteRecord(model, { id }) {\n return security.withoutAuthorization(async () => {\n await cms.deleteEntry(model, attachAcoRecordPrefix(id));\n return true;\n });\n }\n };\n};\n"],"mappings":"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"}
|