@webiny/api-page-builder-import-export 0.0.0-unstable.5e7233243f → 0.0.0-unstable.60a863e033
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/client.d.ts +2 -2
- package/client.js +6 -16
- package/client.js.map +1 -1
- package/export/combine/blocksHandler.d.ts +6 -0
- package/export/combine/blocksHandler.js +99 -0
- package/export/combine/blocksHandler.js.map +1 -0
- package/{exportPages → export}/combine/index.d.ts +3 -2
- package/export/combine/index.js +35 -0
- package/export/combine/index.js.map +1 -0
- package/export/combine/pagesHandler.d.ts +6 -0
- package/export/combine/pagesHandler.js +99 -0
- package/export/combine/pagesHandler.js.map +1 -0
- package/export/combine/templatesHandler.d.ts +6 -0
- package/export/combine/templatesHandler.js +99 -0
- package/export/combine/templatesHandler.js.map +1 -0
- package/export/process/blocksHandler.d.ts +6 -0
- package/export/process/blocksHandler.js +162 -0
- package/export/process/blocksHandler.js.map +1 -0
- package/{exportPages → export}/process/index.d.ts +4 -6
- package/export/process/index.js +32 -0
- package/export/process/index.js.map +1 -0
- package/export/process/pagesHandler.d.ts +6 -0
- package/export/process/pagesHandler.js +189 -0
- package/export/process/pagesHandler.js.map +1 -0
- package/export/process/templatesHandler.d.ts +6 -0
- package/export/process/templatesHandler.js +166 -0
- package/export/process/templatesHandler.js.map +1 -0
- package/{exportPages → export}/s3Stream.js +4 -25
- package/{exportPages → export}/s3Stream.js.map +1 -1
- package/export/utils.d.ts +22 -0
- package/export/utils.js +160 -0
- package/export/utils.js.map +1 -0
- package/{exportPages → export}/zipper.d.ts +6 -5
- package/{exportPages → export}/zipper.js +39 -52
- package/export/zipper.js.map +1 -0
- package/graphql/crud/blocks.crud.d.ts +4 -0
- package/graphql/crud/blocks.crud.js +137 -0
- package/graphql/crud/blocks.crud.js.map +1 -0
- package/graphql/crud/importExportTasks.crud.d.ts +5 -0
- package/graphql/crud/{pageImportExportTasks.crud.js → importExportTasks.crud.js} +73 -114
- package/graphql/crud/importExportTasks.crud.js.map +1 -0
- package/graphql/crud/pages.crud.d.ts +2 -2
- package/graphql/crud/pages.crud.js +40 -54
- package/graphql/crud/pages.crud.js.map +1 -1
- package/graphql/crud/templates.crud.d.ts +4 -0
- package/graphql/crud/templates.crud.js +124 -0
- package/graphql/crud/templates.crud.js.map +1 -0
- package/graphql/crud.d.ts +2 -2
- package/graphql/crud.js +5 -8
- package/graphql/crud.js.map +1 -1
- package/graphql/graphql/blocks.gql.d.ts +4 -0
- package/graphql/graphql/blocks.gql.js +52 -0
- package/graphql/graphql/blocks.gql.js.map +1 -0
- package/graphql/graphql/importExportTasks.gql.d.ts +4 -0
- package/graphql/graphql/{pageImportExportTasks.gql.js → importExportTasks.gql.js} +19 -24
- package/graphql/graphql/importExportTasks.gql.js.map +1 -0
- package/graphql/graphql/pages.gql.d.ts +2 -2
- package/graphql/graphql/pages.gql.js +5 -16
- package/graphql/graphql/pages.gql.js.map +1 -1
- package/graphql/graphql/templates.gql.d.ts +4 -0
- package/graphql/graphql/templates.gql.js +52 -0
- package/graphql/graphql/templates.gql.js.map +1 -0
- package/graphql/graphql/utils/resolve.js +0 -3
- package/graphql/graphql/utils/resolve.js.map +1 -1
- package/graphql/graphql.js +5 -7
- package/graphql/graphql.js.map +1 -1
- package/graphql/index.d.ts +2 -2
- package/graphql/index.js +1 -6
- package/graphql/index.js.map +1 -1
- package/graphql/types.d.ts +60 -23
- package/graphql/types.js.map +1 -1
- package/import/create/blocksHandler.d.ts +3 -0
- package/import/create/blocksHandler.js +100 -0
- package/import/create/blocksHandler.js.map +1 -0
- package/{importPages → import}/create/index.d.ts +7 -5
- package/import/create/index.js +35 -0
- package/import/create/index.js.map +1 -0
- package/import/create/pagesHandler.d.ts +3 -0
- package/import/create/pagesHandler.js +102 -0
- package/import/create/pagesHandler.js.map +1 -0
- package/import/create/templatesHandler.d.ts +3 -0
- package/import/create/templatesHandler.js +98 -0
- package/import/create/templatesHandler.js.map +1 -0
- package/import/process/blocksHandler.d.ts +3 -0
- package/import/process/blocksHandler.js +169 -0
- package/import/process/blocksHandler.js.map +1 -0
- package/{importPages → import}/process/index.d.ts +5 -3
- package/import/process/index.js +32 -0
- package/import/process/index.js.map +1 -0
- package/import/process/pagesHandler.d.ts +3 -0
- package/import/process/pagesHandler.js +177 -0
- package/import/process/pagesHandler.js.map +1 -0
- package/import/process/templatesHandler.d.ts +3 -0
- package/import/process/templatesHandler.js +169 -0
- package/import/process/templatesHandler.js.map +1 -0
- package/import/utils.d.ts +56 -0
- package/{importPages → import}/utils.js +194 -157
- package/import/utils.js.map +1 -0
- package/mockSecurity.js +0 -2
- package/mockSecurity.js.map +1 -1
- package/package.json +28 -28
- package/types.d.ts +62 -65
- package/types.js +17 -22
- package/types.js.map +1 -1
- package/exportPages/combine/index.js +0 -114
- package/exportPages/combine/index.js.map +0 -1
- package/exportPages/process/index.js +0 -208
- package/exportPages/process/index.js.map +0 -1
- package/exportPages/utils.d.ts +0 -13
- package/exportPages/utils.js +0 -113
- package/exportPages/utils.js.map +0 -1
- package/exportPages/zipper.js.map +0 -1
- package/graphql/crud/pageImportExportTasks.crud.d.ts +0 -5
- package/graphql/crud/pageImportExportTasks.crud.js.map +0 -1
- package/graphql/graphql/pageImportExportTasks.gql.d.ts +0 -4
- package/graphql/graphql/pageImportExportTasks.gql.js.map +0 -1
- package/importPages/create/index.js +0 -118
- package/importPages/create/index.js.map +0 -1
- package/importPages/process/index.js +0 -185
- package/importPages/process/index.js.map +0 -1
- package/importPages/utils.d.ts +0 -50
- package/importPages/utils.js.map +0 -1
- /package/{exportPages → export}/s3Stream.d.ts +0 -0
@@ -0,0 +1,137 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
5
|
+
value: true
|
6
|
+
});
|
7
|
+
exports.default = void 0;
|
8
|
+
var _error = _interopRequireDefault(require("@webiny/error"));
|
9
|
+
var _handlerGraphql = require("@webiny/handler-graphql");
|
10
|
+
var _api = require("@webiny/api");
|
11
|
+
var _checkBasePermissions = _interopRequireDefault(require("@webiny/api-page-builder/graphql/crud/utils/checkBasePermissions"));
|
12
|
+
var _types = require("../../types");
|
13
|
+
var _client = require("../../client");
|
14
|
+
var _utils = require("../../import/utils");
|
15
|
+
var _utils2 = require("../../export/utils");
|
16
|
+
var _utils3 = require("@webiny/utils");
|
17
|
+
const PERMISSION_NAME = "pb.block";
|
18
|
+
const EXPORT_BLOCKS_PROCESS_HANDLER = process.env.EXPORT_PROCESS_HANDLER;
|
19
|
+
const IMPORT_BLOCKS_CREATE_HANDLER = process.env.IMPORT_CREATE_HANDLER;
|
20
|
+
var _default = new _api.ContextPlugin(context => {
|
21
|
+
const importExportCrud = {
|
22
|
+
async importBlocks({
|
23
|
+
category: categorySlug,
|
24
|
+
zipFileUrl
|
25
|
+
}) {
|
26
|
+
await (0, _checkBasePermissions.default)(context, PERMISSION_NAME, {
|
27
|
+
rwd: "w"
|
28
|
+
});
|
29
|
+
|
30
|
+
// Bail out early if category not found
|
31
|
+
const category = await context.pageBuilder.getBlockCategory(categorySlug);
|
32
|
+
if (!category) {
|
33
|
+
throw new _handlerGraphql.NotFoundError(`Category with slug "${categorySlug}" not found.`);
|
34
|
+
}
|
35
|
+
|
36
|
+
// Create a task for import block
|
37
|
+
const task = await context.pageBuilder.importExportTask.createTask({
|
38
|
+
status: _types.ImportExportTaskStatus.PENDING,
|
39
|
+
input: {
|
40
|
+
category: categorySlug,
|
41
|
+
zipFileUrl
|
42
|
+
}
|
43
|
+
});
|
44
|
+
/**
|
45
|
+
* Import Blocks
|
46
|
+
* ImportBlocks
|
47
|
+
* importBlocks
|
48
|
+
*/
|
49
|
+
await (0, _client.invokeHandlerClient)({
|
50
|
+
context,
|
51
|
+
name: IMPORT_BLOCKS_CREATE_HANDLER,
|
52
|
+
payload: {
|
53
|
+
category: categorySlug,
|
54
|
+
zipFileUrl,
|
55
|
+
task,
|
56
|
+
type: "block",
|
57
|
+
identity: context.security.getIdentity()
|
58
|
+
},
|
59
|
+
description: "Import Blocks - create"
|
60
|
+
});
|
61
|
+
return {
|
62
|
+
task
|
63
|
+
};
|
64
|
+
},
|
65
|
+
async exportBlocks({
|
66
|
+
ids: initialBlockIds,
|
67
|
+
where
|
68
|
+
}) {
|
69
|
+
await (0, _checkBasePermissions.default)(context, PERMISSION_NAME, {
|
70
|
+
rwd: "w"
|
71
|
+
});
|
72
|
+
let blockIds = initialBlockIds || [];
|
73
|
+
// If no ids are provided then it means we want to export all blocks
|
74
|
+
if (!initialBlockIds || Array.isArray(initialBlockIds) && initialBlockIds.length === 0) {
|
75
|
+
blockIds = [];
|
76
|
+
const blocks = await context.pageBuilder.listPageBlocks({
|
77
|
+
where
|
78
|
+
});
|
79
|
+
// Save block ids
|
80
|
+
blocks.forEach(block => blockIds.push(block.id));
|
81
|
+
}
|
82
|
+
if (blockIds.length === 0) {
|
83
|
+
throw new _error.default("Cannot export blocks - no blocks found for provided inputs.", "EMPTY_EXPORT_NO_BLOCKS_FOUND");
|
84
|
+
}
|
85
|
+
|
86
|
+
// Create the main task for blocks export.
|
87
|
+
const task = await context.pageBuilder.importExportTask.createTask({
|
88
|
+
status: _types.ImportExportTaskStatus.PENDING
|
89
|
+
});
|
90
|
+
const exportBlocksDataKey = `${_utils2.EXPORT_BLOCKS_FOLDER_KEY}/${task.id}`;
|
91
|
+
// For each block create a sub task and invoke the process handler.
|
92
|
+
for (let i = 0; i < blockIds.length; i++) {
|
93
|
+
const blockId = blockIds[i];
|
94
|
+
// Create sub task.
|
95
|
+
await context.pageBuilder.importExportTask.createSubTask(task.id, (0, _utils3.zeroPad)(i + 1, 5), {
|
96
|
+
status: _types.ImportExportTaskStatus.PENDING,
|
97
|
+
input: {
|
98
|
+
blockId,
|
99
|
+
exportBlocksDataKey
|
100
|
+
}
|
101
|
+
});
|
102
|
+
}
|
103
|
+
// Update main task status.
|
104
|
+
await context.pageBuilder.importExportTask.updateTask(task.id, {
|
105
|
+
status: _types.ImportExportTaskStatus.PROCESSING,
|
106
|
+
stats: (0, _utils.initialStats)(blockIds.length),
|
107
|
+
input: {
|
108
|
+
exportBlocksDataKey
|
109
|
+
}
|
110
|
+
});
|
111
|
+
|
112
|
+
/**
|
113
|
+
* Export Blocks
|
114
|
+
* ExportBlocks
|
115
|
+
* exportBlocks
|
116
|
+
*/
|
117
|
+
// Invoke handler.
|
118
|
+
await (0, _client.invokeHandlerClient)({
|
119
|
+
context,
|
120
|
+
name: EXPORT_BLOCKS_PROCESS_HANDLER,
|
121
|
+
payload: {
|
122
|
+
taskId: task.id,
|
123
|
+
subTaskIndex: 1,
|
124
|
+
type: "block",
|
125
|
+
identity: context.security.getIdentity()
|
126
|
+
},
|
127
|
+
description: "Export blocks - process"
|
128
|
+
});
|
129
|
+
return {
|
130
|
+
task
|
131
|
+
};
|
132
|
+
}
|
133
|
+
};
|
134
|
+
// Modify context
|
135
|
+
context.pageBuilder.blocks = importExportCrud;
|
136
|
+
});
|
137
|
+
exports.default = _default;
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["PERMISSION_NAME","EXPORT_BLOCKS_PROCESS_HANDLER","process","env","EXPORT_PROCESS_HANDLER","IMPORT_BLOCKS_CREATE_HANDLER","IMPORT_CREATE_HANDLER","ContextPlugin","context","importExportCrud","importBlocks","category","categorySlug","zipFileUrl","checkBasePermissions","rwd","pageBuilder","getBlockCategory","NotFoundError","task","importExportTask","createTask","status","ImportExportTaskStatus","PENDING","input","invokeHandlerClient","name","payload","type","identity","security","getIdentity","description","exportBlocks","ids","initialBlockIds","where","blockIds","Array","isArray","length","blocks","listPageBlocks","forEach","block","push","id","WebinyError","exportBlocksDataKey","EXPORT_BLOCKS_FOLDER_KEY","i","blockId","createSubTask","zeroPad","updateTask","PROCESSING","stats","initialStats","taskId","subTaskIndex"],"sources":["blocks.crud.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport { ContextPlugin } from \"@webiny/api\";\nimport checkBasePermissions from \"@webiny/api-page-builder/graphql/crud/utils/checkBasePermissions\";\nimport { ImportExportTaskStatus, BlocksImportExportCrud, PbImportExportContext } from \"~/types\";\nimport { invokeHandlerClient } from \"~/client\";\nimport { Payload as CreateHandlerPayload } from \"~/import/create\";\nimport { initialStats } from \"~/import/utils\";\nimport { Payload as ExportBlocksProcessHandlerPayload } from \"~/export/process\";\nimport { EXPORT_BLOCKS_FOLDER_KEY } from \"~/export/utils\";\nimport { zeroPad } from \"@webiny/utils\";\n\nconst PERMISSION_NAME = \"pb.block\";\nconst EXPORT_BLOCKS_PROCESS_HANDLER = process.env.EXPORT_PROCESS_HANDLER as string;\nconst IMPORT_BLOCKS_CREATE_HANDLER = process.env.IMPORT_CREATE_HANDLER as string;\n\nexport default new ContextPlugin<PbImportExportContext>(context => {\n const importExportCrud: BlocksImportExportCrud = {\n async importBlocks({ category: categorySlug, zipFileUrl }) {\n await checkBasePermissions(context, PERMISSION_NAME, {\n rwd: \"w\"\n });\n\n // Bail out early if category not found\n const category = await context.pageBuilder.getBlockCategory(categorySlug);\n if (!category) {\n throw new NotFoundError(`Category with slug \"${categorySlug}\" not found.`);\n }\n\n // Create a task for import block\n const task = await context.pageBuilder.importExportTask.createTask({\n status: ImportExportTaskStatus.PENDING,\n input: {\n category: categorySlug,\n zipFileUrl\n }\n });\n /**\n * Import Blocks\n * ImportBlocks\n * importBlocks\n */\n await invokeHandlerClient<CreateHandlerPayload>({\n context,\n name: IMPORT_BLOCKS_CREATE_HANDLER,\n payload: {\n category: categorySlug,\n zipFileUrl,\n task,\n type: \"block\",\n identity: context.security.getIdentity()\n },\n description: \"Import Blocks - create\"\n });\n\n return {\n task\n };\n },\n\n async exportBlocks({ ids: initialBlockIds, where }) {\n await checkBasePermissions(context, PERMISSION_NAME, {\n rwd: \"w\"\n });\n let blockIds: string[] = initialBlockIds || [];\n // If no ids are provided then it means we want to export all blocks\n if (\n !initialBlockIds ||\n (Array.isArray(initialBlockIds) && initialBlockIds.length === 0)\n ) {\n blockIds = [];\n const blocks = await context.pageBuilder.listPageBlocks({ where });\n // Save block ids\n blocks.forEach(block => blockIds.push(block.id));\n }\n\n if (blockIds.length === 0) {\n throw new WebinyError(\n \"Cannot export blocks - no blocks found for provided inputs.\",\n \"EMPTY_EXPORT_NO_BLOCKS_FOUND\"\n );\n }\n\n // Create the main task for blocks export.\n const task = await context.pageBuilder.importExportTask.createTask({\n status: ImportExportTaskStatus.PENDING\n });\n const exportBlocksDataKey = `${EXPORT_BLOCKS_FOLDER_KEY}/${task.id}`;\n // For each block create a sub task and invoke the process handler.\n for (let i = 0; i < blockIds.length; i++) {\n const blockId = blockIds[i];\n // Create sub task.\n await context.pageBuilder.importExportTask.createSubTask(\n task.id,\n zeroPad(i + 1, 5),\n {\n status: ImportExportTaskStatus.PENDING,\n input: {\n blockId,\n exportBlocksDataKey\n }\n }\n );\n }\n // Update main task status.\n await context.pageBuilder.importExportTask.updateTask(task.id, {\n status: ImportExportTaskStatus.PROCESSING,\n stats: initialStats(blockIds.length),\n input: {\n exportBlocksDataKey\n }\n });\n\n /**\n * Export Blocks\n * ExportBlocks\n * exportBlocks\n */\n // Invoke handler.\n await invokeHandlerClient<ExportBlocksProcessHandlerPayload>({\n context,\n name: EXPORT_BLOCKS_PROCESS_HANDLER,\n payload: {\n taskId: task.id,\n subTaskIndex: 1,\n type: \"block\",\n identity: context.security.getIdentity()\n },\n description: \"Export blocks - process\"\n });\n\n return { task };\n }\n };\n // Modify context\n context.pageBuilder.blocks = importExportCrud;\n});\n"],"mappings":"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"}
|
@@ -0,0 +1,5 @@
|
|
1
|
+
import { ContextPlugin } from "@webiny/api";
|
2
|
+
import { ImportExportPluginsParams } from "../../types";
|
3
|
+
import { PbImportExportContext } from "../types";
|
4
|
+
declare const _default: ({ storageOperations }: ImportExportPluginsParams) => ContextPlugin<PbImportExportContext>;
|
5
|
+
export default _default;
|
@@ -1,39 +1,37 @@
|
|
1
1
|
"use strict";
|
2
2
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
-
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
6
5
|
value: true
|
7
6
|
});
|
8
7
|
exports.default = void 0;
|
9
|
-
|
10
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
11
|
-
|
8
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
12
9
|
var _mdbid = _interopRequireDefault(require("mdbid"));
|
13
|
-
|
14
10
|
var _fields = require("@commodo/fields");
|
15
|
-
|
16
11
|
var _commodoFieldsObject = require("commodo-fields-object");
|
17
|
-
|
18
12
|
var _validation = require("@webiny/validation");
|
19
|
-
|
20
13
|
var _api = require("@webiny/api");
|
21
|
-
|
22
14
|
var _checkBasePermissions = _interopRequireDefault(require("@webiny/api-page-builder/graphql/crud/utils/checkBasePermissions"));
|
23
|
-
|
24
15
|
var _checkOwnPermissions = _interopRequireDefault(require("@webiny/api-page-builder/graphql/crud/utils/checkOwnPermissions"));
|
25
|
-
|
26
16
|
var _handlerGraphql = require("@webiny/handler-graphql");
|
27
|
-
|
28
17
|
var _types = require("../../types");
|
29
|
-
|
30
18
|
var _error = _interopRequireDefault(require("@webiny/error"));
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
19
|
+
/**
|
20
|
+
* Package mdbid does not have types.
|
21
|
+
*/
|
22
|
+
// @ts-ignore
|
23
|
+
|
24
|
+
/**
|
25
|
+
* Package @commodo/fields does not have types.
|
26
|
+
*/
|
27
|
+
// @ts-ignore
|
28
|
+
|
29
|
+
/**
|
30
|
+
* Package commodo-fields-object does not have types.
|
31
|
+
*/
|
32
|
+
// @ts-ignore
|
33
|
+
|
34
|
+
const validStatus = `${_types.ImportExportTaskStatus.PENDING}:${_types.ImportExportTaskStatus.PROCESSING}:${_types.ImportExportTaskStatus.COMPLETED}:${_types.ImportExportTaskStatus.FAILED}`;
|
37
35
|
const CreateDataModel = (0, _fields.withFields)({
|
38
36
|
status: (0, _fields.string)({
|
39
37
|
validation: _validation.validation.create(`required,in:${validStatus}`)
|
@@ -53,7 +51,6 @@ const UpdateDataModel = (0, _fields.withFields)({
|
|
53
51
|
error: (0, _commodoFieldsObject.object)()
|
54
52
|
})();
|
55
53
|
const PERMISSION_NAME = "pb.page";
|
56
|
-
|
57
54
|
var _default = ({
|
58
55
|
storageOperations
|
59
56
|
}) => new _api.ContextPlugin(async context => {
|
@@ -61,24 +58,20 @@ var _default = ({
|
|
61
58
|
* If pageBuilder is not defined on the context, do not continue, but log it.
|
62
59
|
*/
|
63
60
|
if (!context.pageBuilder) {
|
64
|
-
console.log("Missing pageBuilder on context. Skipping
|
61
|
+
console.log("Missing pageBuilder on context. Skipping ImportExportTasks crud.");
|
65
62
|
return;
|
66
63
|
}
|
67
|
-
|
68
64
|
const getLocale = () => {
|
69
65
|
const locale = context.i18n.getContentLocale();
|
70
|
-
|
71
66
|
if (!locale) {
|
72
|
-
throw new _error.default("Missing content locale in
|
67
|
+
throw new _error.default("Missing content locale in importExportTasks.crud.ts", "LOCALE_ERROR");
|
73
68
|
}
|
74
|
-
|
75
69
|
return locale;
|
76
|
-
};
|
77
|
-
|
70
|
+
};
|
78
71
|
|
79
|
-
|
72
|
+
// Modify context
|
73
|
+
context.pageBuilder.importExportTask = {
|
80
74
|
storageOperations,
|
81
|
-
|
82
75
|
async getTask(id) {
|
83
76
|
const permission = await (0, _checkBasePermissions.default)(context, PERMISSION_NAME, {
|
84
77
|
rwd: "r"
|
@@ -92,25 +85,21 @@ var _default = ({
|
|
92
85
|
id
|
93
86
|
}
|
94
87
|
};
|
95
|
-
let
|
96
|
-
|
88
|
+
let importExportTask = null;
|
97
89
|
try {
|
98
|
-
|
99
|
-
|
100
|
-
if (!pageImportExportTask) {
|
90
|
+
importExportTask = await storageOperations.getTask(params);
|
91
|
+
if (!importExportTask) {
|
101
92
|
return null;
|
102
93
|
}
|
103
94
|
} catch (ex) {
|
104
|
-
throw new _error.default(ex.message || "Could not get
|
95
|
+
throw new _error.default(ex.message || "Could not get importExportTask by id.", ex.code || "GET_IMPORT_EXPORT_TASK_ERROR", (0, _objectSpread2.default)((0, _objectSpread2.default)({}, ex.data || {}), {}, {
|
105
96
|
params
|
106
97
|
}));
|
107
98
|
}
|
108
|
-
|
109
99
|
const identity = context.security.getIdentity();
|
110
|
-
(0, _checkOwnPermissions.default)(identity, permission,
|
111
|
-
return
|
100
|
+
(0, _checkOwnPermissions.default)(identity, permission, importExportTask);
|
101
|
+
return importExportTask;
|
112
102
|
},
|
113
|
-
|
114
103
|
async listTasks(params) {
|
115
104
|
const permission = await (0, _checkBasePermissions.default)(context, PERMISSION_NAME, {
|
116
105
|
rwd: "r"
|
@@ -128,23 +117,22 @@ var _default = ({
|
|
128
117
|
},
|
129
118
|
sort: Array.isArray(sort) && sort.length > 0 ? sort : ["createdOn_ASC"],
|
130
119
|
limit: limit
|
131
|
-
};
|
120
|
+
};
|
132
121
|
|
122
|
+
// If user can only manage own records, let's add that to the listing.
|
133
123
|
if (permission.own) {
|
134
124
|
const identity = context.security.getIdentity();
|
135
125
|
listParams.where.createdBy = identity.id;
|
136
126
|
}
|
137
|
-
|
138
127
|
try {
|
139
128
|
const [items] = await storageOperations.listTasks(listParams);
|
140
129
|
return items;
|
141
130
|
} catch (ex) {
|
142
|
-
throw new _error.default(ex.message || "Could not list all
|
131
|
+
throw new _error.default(ex.message || "Could not list all importExportTask.", ex.code || "LIST_ELEMENTS_ERROR", {
|
143
132
|
params
|
144
133
|
});
|
145
134
|
}
|
146
135
|
},
|
147
|
-
|
148
136
|
async createTask(input) {
|
149
137
|
await (0, _checkBasePermissions.default)(context, PERMISSION_NAME, {
|
150
138
|
rwd: "w"
|
@@ -154,8 +142,7 @@ var _default = ({
|
|
154
142
|
const id = (0, _mdbid.default)();
|
155
143
|
const identity = context.security.getIdentity();
|
156
144
|
const data = await createDataModel.toJSON();
|
157
|
-
|
158
|
-
const pageImportExportTask = _objectSpread(_objectSpread({}, data), {}, {
|
145
|
+
const importExportTask = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, data), {}, {
|
159
146
|
tenant: context.tenancy.getCurrentTenant().id,
|
160
147
|
locale: getLocale().code,
|
161
148
|
id,
|
@@ -166,29 +153,25 @@ var _default = ({
|
|
166
153
|
displayName: identity.displayName
|
167
154
|
}
|
168
155
|
});
|
169
|
-
|
170
156
|
try {
|
171
157
|
return await storageOperations.createTask({
|
172
158
|
input: data,
|
173
|
-
task:
|
159
|
+
task: importExportTask
|
174
160
|
});
|
175
161
|
} catch (ex) {
|
176
|
-
throw new _error.default(ex.message || "Could not create
|
177
|
-
|
162
|
+
throw new _error.default(ex.message || "Could not create importExportTask.", ex.code || "CREATE_IMPORT_EXPORT_TASK_ERROR", (0, _objectSpread2.default)((0, _objectSpread2.default)({}, ex.data || {}), {}, {
|
163
|
+
importExportTask
|
178
164
|
}));
|
179
165
|
}
|
180
166
|
},
|
181
|
-
|
182
167
|
async updateTask(id, input) {
|
183
168
|
const permission = await (0, _checkBasePermissions.default)(context, PERMISSION_NAME, {
|
184
169
|
rwd: "w"
|
185
170
|
});
|
186
|
-
const original = await context.pageBuilder.
|
187
|
-
|
171
|
+
const original = await context.pageBuilder.importExportTask.getTask(id);
|
188
172
|
if (!original) {
|
189
|
-
throw new _handlerGraphql.NotFoundError(`
|
173
|
+
throw new _handlerGraphql.NotFoundError(`ImportExportTask "${id}" not found.`);
|
190
174
|
}
|
191
|
-
|
192
175
|
const identity = context.security.getIdentity();
|
193
176
|
(0, _checkOwnPermissions.default)(identity, permission, original);
|
194
177
|
const updateDataModel = new UpdateDataModel().populate(input);
|
@@ -196,72 +179,61 @@ var _default = ({
|
|
196
179
|
const data = await updateDataModel.toJSON({
|
197
180
|
onlyDirty: true
|
198
181
|
});
|
199
|
-
|
200
|
-
const pageImportExportTask = _objectSpread(_objectSpread({}, original), data);
|
201
|
-
|
182
|
+
const importExportTask = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, original), data);
|
202
183
|
try {
|
203
184
|
return await storageOperations.updateTask({
|
204
185
|
input: data,
|
205
186
|
original,
|
206
|
-
task:
|
187
|
+
task: importExportTask
|
207
188
|
});
|
208
189
|
} catch (ex) {
|
209
|
-
throw new _error.default(ex.message || "Could not update
|
190
|
+
throw new _error.default(ex.message || "Could not update importExportTask.", ex.code || "UPDATE_IMPORT_EXPORT_TASK_ERROR", (0, _objectSpread2.default)((0, _objectSpread2.default)({}, ex.data || {}), {}, {
|
210
191
|
original,
|
211
|
-
|
192
|
+
importExportTask
|
212
193
|
}));
|
213
194
|
}
|
214
195
|
},
|
215
|
-
|
216
196
|
async deleteTask(id) {
|
217
197
|
const permission = await (0, _checkBasePermissions.default)(context, PERMISSION_NAME, {
|
218
198
|
rwd: "d"
|
219
199
|
});
|
220
|
-
const
|
221
|
-
|
222
|
-
|
223
|
-
throw new _handlerGraphql.NotFoundError(`PageImportExportTask "${id}" not found.`);
|
200
|
+
const importExportTask = await context.pageBuilder.importExportTask.getTask(id);
|
201
|
+
if (!importExportTask) {
|
202
|
+
throw new _handlerGraphql.NotFoundError(`ImportExportTask "${id}" not found.`);
|
224
203
|
}
|
225
|
-
|
226
204
|
const identity = context.security.getIdentity();
|
227
|
-
(0, _checkOwnPermissions.default)(identity, permission,
|
228
|
-
|
205
|
+
(0, _checkOwnPermissions.default)(identity, permission, importExportTask);
|
229
206
|
try {
|
230
207
|
return await storageOperations.deleteTask({
|
231
|
-
task:
|
208
|
+
task: importExportTask
|
232
209
|
});
|
233
210
|
} catch (ex) {
|
234
|
-
throw new _error.default(ex.message || "Could not delete
|
235
|
-
|
211
|
+
throw new _error.default(ex.message || "Could not delete importExportTask.", ex.code || "DELETE_IMPORT_EXPORT_TASK_ERROR", (0, _objectSpread2.default)((0, _objectSpread2.default)({}, ex.data || {}), {}, {
|
212
|
+
importExportTask
|
236
213
|
}));
|
237
214
|
}
|
238
215
|
},
|
239
|
-
|
240
216
|
async updateStats(id, input) {
|
241
217
|
const permission = await (0, _checkBasePermissions.default)(context, PERMISSION_NAME, {
|
242
218
|
rwd: "w"
|
243
219
|
});
|
244
|
-
const original = await context.pageBuilder.
|
245
|
-
|
220
|
+
const original = await context.pageBuilder.importExportTask.getTask(id);
|
246
221
|
if (!original) {
|
247
|
-
throw new _handlerGraphql.NotFoundError(`
|
222
|
+
throw new _handlerGraphql.NotFoundError(`ImportExportTask "${id}" not found.`);
|
248
223
|
}
|
249
|
-
|
250
224
|
const identity = context.security.getIdentity();
|
251
225
|
(0, _checkOwnPermissions.default)(identity, permission, original);
|
252
|
-
|
253
226
|
try {
|
254
227
|
return await storageOperations.updateTaskStats({
|
255
228
|
input,
|
256
229
|
original
|
257
230
|
});
|
258
231
|
} catch (ex) {
|
259
|
-
throw new _error.default(ex.message || "Could not update
|
232
|
+
throw new _error.default(ex.message || "Could not update importExportTask.", ex.code || "UPDATE_IMPORT_EXPORT_TASK_ERROR", (0, _objectSpread2.default)((0, _objectSpread2.default)({}, ex.data || {}), {}, {
|
260
233
|
original
|
261
234
|
}));
|
262
235
|
}
|
263
236
|
},
|
264
|
-
|
265
237
|
async createSubTask(parent, id, input) {
|
266
238
|
await (0, _checkBasePermissions.default)(context, PERMISSION_NAME, {
|
267
239
|
rwd: "w"
|
@@ -270,8 +242,7 @@ var _default = ({
|
|
270
242
|
await createDataModel.validate();
|
271
243
|
const identity = context.security.getIdentity();
|
272
244
|
const data = await createDataModel.toJSON();
|
273
|
-
|
274
|
-
const pageImportExportSubTask = _objectSpread(_objectSpread({}, data), {}, {
|
245
|
+
const importExportSubTask = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, data), {}, {
|
275
246
|
tenant: context.tenancy.getCurrentTenant().id,
|
276
247
|
locale: getLocale().code,
|
277
248
|
id: id,
|
@@ -283,53 +254,47 @@ var _default = ({
|
|
283
254
|
displayName: identity.displayName
|
284
255
|
}
|
285
256
|
});
|
286
|
-
|
287
257
|
try {
|
288
258
|
return await storageOperations.createSubTask({
|
289
259
|
input: data,
|
290
|
-
subTask:
|
260
|
+
subTask: importExportSubTask
|
291
261
|
});
|
292
262
|
} catch (ex) {
|
293
|
-
throw new _error.default(ex.message || "Could not create
|
294
|
-
|
263
|
+
throw new _error.default(ex.message || "Could not create importExportSubTask.", ex.code || "CREATE_IMPORT_EXPORT_TASK_ERROR", (0, _objectSpread2.default)((0, _objectSpread2.default)({}, ex.data || {}), {}, {
|
264
|
+
importExportSubTask
|
295
265
|
}));
|
296
266
|
}
|
297
267
|
},
|
298
|
-
|
299
268
|
async updateSubTask(parent, subTaskId, input) {
|
300
269
|
const permission = await (0, _checkBasePermissions.default)(context, PERMISSION_NAME, {
|
301
270
|
rwd: "w"
|
302
271
|
});
|
303
|
-
const original = await context.pageBuilder.
|
304
|
-
|
272
|
+
const original = await context.pageBuilder.importExportTask.getSubTask(parent, subTaskId);
|
305
273
|
if (!original) {
|
306
|
-
throw new _handlerGraphql.NotFoundError(`
|
274
|
+
throw new _handlerGraphql.NotFoundError(`ImportExportTask parent: "${parent}" and id: "${subTaskId}" not found.`);
|
307
275
|
}
|
308
|
-
|
309
276
|
const identity = context.security.getIdentity();
|
310
277
|
(0, _checkOwnPermissions.default)(identity, permission, original);
|
311
278
|
const updateDataModel = new UpdateDataModel().populate(input);
|
312
279
|
await updateDataModel.validate();
|
313
280
|
const data = await updateDataModel.toJSON({
|
314
281
|
onlyDirty: true
|
315
|
-
});
|
316
|
-
|
317
|
-
const
|
318
|
-
|
282
|
+
});
|
283
|
+
// TODO: Merge recursively
|
284
|
+
const importExportSubTask = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, original), data);
|
319
285
|
try {
|
320
286
|
return await storageOperations.updateSubTask({
|
321
287
|
input: data,
|
322
288
|
original,
|
323
|
-
subTask:
|
289
|
+
subTask: importExportSubTask
|
324
290
|
});
|
325
291
|
} catch (ex) {
|
326
|
-
throw new _error.default(ex.message || "Could not update
|
327
|
-
|
292
|
+
throw new _error.default(ex.message || "Could not update importExportSubTask.", ex.code || "UPDATE_IMPORT_EXPORT_TASK_ERROR", (0, _objectSpread2.default)((0, _objectSpread2.default)({}, ex.data || {}), {}, {
|
293
|
+
importExportSubTask,
|
328
294
|
original
|
329
295
|
}));
|
330
296
|
}
|
331
297
|
},
|
332
|
-
|
333
298
|
async getSubTask(parent, subTaskId) {
|
334
299
|
const permission = await (0, _checkBasePermissions.default)(context, PERMISSION_NAME, {
|
335
300
|
rwd: "r"
|
@@ -344,25 +309,21 @@ var _default = ({
|
|
344
309
|
parent: parent
|
345
310
|
}
|
346
311
|
};
|
347
|
-
let
|
348
|
-
|
312
|
+
let importExportSubTask = null;
|
349
313
|
try {
|
350
|
-
|
351
|
-
|
352
|
-
if (!pageImportExportSubTask) {
|
314
|
+
importExportSubTask = await storageOperations.getSubTask(params);
|
315
|
+
if (!importExportSubTask) {
|
353
316
|
return null;
|
354
317
|
}
|
355
318
|
} catch (ex) {
|
356
|
-
throw new _error.default(ex.message || "Could not get
|
319
|
+
throw new _error.default(ex.message || "Could not get importExportSubTask by id.", ex.code || "GET_IMPORT_EXPORT_TASK_ERROR", (0, _objectSpread2.default)((0, _objectSpread2.default)({}, ex.data || {}), {}, {
|
357
320
|
params
|
358
321
|
}));
|
359
322
|
}
|
360
|
-
|
361
323
|
const identity = context.security.getIdentity();
|
362
|
-
(0, _checkOwnPermissions.default)(identity, permission,
|
363
|
-
return
|
324
|
+
(0, _checkOwnPermissions.default)(identity, permission, importExportSubTask);
|
325
|
+
return importExportSubTask;
|
364
326
|
},
|
365
|
-
|
366
327
|
async listSubTasks(parent, status, limit) {
|
367
328
|
const permission = await (0, _checkBasePermissions.default)(context, PERMISSION_NAME, {
|
368
329
|
rwd: "r"
|
@@ -377,18 +338,18 @@ var _default = ({
|
|
377
338
|
status
|
378
339
|
},
|
379
340
|
limit
|
380
|
-
};
|
341
|
+
};
|
381
342
|
|
343
|
+
// If user can only manage own records, let's add that to the listing.
|
382
344
|
if (permission.own) {
|
383
345
|
const identity = context.security.getIdentity();
|
384
346
|
listParams.where.createdBy = identity.id;
|
385
347
|
}
|
386
|
-
|
387
348
|
try {
|
388
349
|
const [items] = await storageOperations.listSubTasks(listParams);
|
389
350
|
return items;
|
390
351
|
} catch (ex) {
|
391
|
-
throw new _error.default(ex.message || "Could not list all
|
352
|
+
throw new _error.default(ex.message || "Could not list all importExportSubTask.", ex.code || "LIST_IMPORT_EXPORT_TASK_ERROR", {
|
392
353
|
params: {
|
393
354
|
parent,
|
394
355
|
status,
|
@@ -397,8 +358,6 @@ var _default = ({
|
|
397
358
|
});
|
398
359
|
}
|
399
360
|
}
|
400
|
-
|
401
361
|
};
|
402
362
|
});
|
403
|
-
|
404
363
|
exports.default = _default;
|