@webiny/api-headless-cms-tasks 5.40.0-beta.3 → 5.40.0-beta.4
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/package.json +17 -17
- package/tasks/entries/useCases/EmptyTrashBinByModel/CreateDeleteEntriesTasks.d.ts +2 -0
- package/tasks/entries/useCases/EmptyTrashBinByModel/CreateDeleteEntriesTasks.js +51 -41
- package/tasks/entries/useCases/EmptyTrashBinByModel/CreateDeleteEntriesTasks.js.map +1 -1
- package/tasks/entries/useCases/EmptyTrashBinByModel/ProcessDeleteEntriesTasks.js +1 -1
- package/tasks/entries/useCases/EmptyTrashBinByModel/ProcessDeleteEntriesTasks.js.map +1 -1
- package/tasks/entries/useCases/EmptyTrashBinByModel/TaskCache.d.ts +11 -0
- package/tasks/entries/useCases/EmptyTrashBinByModel/TaskCache.js +24 -0
- package/tasks/entries/useCases/EmptyTrashBinByModel/TaskCache.js.map +1 -0
- package/tasks/entries/useCases/EmptyTrashBinByModel/TaskTrigger.d.ts +8 -0
- package/tasks/entries/useCases/EmptyTrashBinByModel/TaskTrigger.js +39 -0
- package/tasks/entries/useCases/EmptyTrashBinByModel/TaskTrigger.js.map +1 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/api-headless-cms-tasks",
|
|
3
|
-
"version": "5.40.0-beta.
|
|
3
|
+
"version": "5.40.0-beta.4",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"description": "Background tasks for Webiny Headless CMS",
|
|
6
6
|
"keywords": [
|
|
@@ -13,10 +13,10 @@
|
|
|
13
13
|
},
|
|
14
14
|
"license": "MIT",
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@webiny/api-headless-cms": "5.40.0-beta.
|
|
17
|
-
"@webiny/handler": "5.40.0-beta.
|
|
18
|
-
"@webiny/handler-aws": "5.40.0-beta.
|
|
19
|
-
"@webiny/tasks": "5.40.0-beta.
|
|
16
|
+
"@webiny/api-headless-cms": "5.40.0-beta.4",
|
|
17
|
+
"@webiny/handler": "5.40.0-beta.4",
|
|
18
|
+
"@webiny/handler-aws": "5.40.0-beta.4",
|
|
19
|
+
"@webiny/tasks": "5.40.0-beta.4"
|
|
20
20
|
},
|
|
21
21
|
"devDependencies": {
|
|
22
22
|
"@babel/cli": "7.24.1",
|
|
@@ -24,17 +24,17 @@
|
|
|
24
24
|
"@babel/preset-env": "7.24.3",
|
|
25
25
|
"@babel/preset-typescript": "7.24.1",
|
|
26
26
|
"@babel/runtime": "7.24.1",
|
|
27
|
-
"@webiny/api": "5.40.0-beta.
|
|
28
|
-
"@webiny/api-admin-users": "5.40.0-beta.
|
|
29
|
-
"@webiny/api-i18n": "5.40.0-beta.
|
|
30
|
-
"@webiny/api-security": "5.40.0-beta.
|
|
31
|
-
"@webiny/api-tenancy": "5.40.0-beta.
|
|
32
|
-
"@webiny/api-wcp": "5.40.0-beta.
|
|
33
|
-
"@webiny/cli": "5.40.0-beta.
|
|
34
|
-
"@webiny/handler-graphql": "5.40.0-beta.
|
|
35
|
-
"@webiny/plugins": "5.40.0-beta.
|
|
36
|
-
"@webiny/project-utils": "5.40.0-beta.
|
|
37
|
-
"@webiny/wcp": "5.40.0-beta.
|
|
27
|
+
"@webiny/api": "5.40.0-beta.4",
|
|
28
|
+
"@webiny/api-admin-users": "5.40.0-beta.4",
|
|
29
|
+
"@webiny/api-i18n": "5.40.0-beta.4",
|
|
30
|
+
"@webiny/api-security": "5.40.0-beta.4",
|
|
31
|
+
"@webiny/api-tenancy": "5.40.0-beta.4",
|
|
32
|
+
"@webiny/api-wcp": "5.40.0-beta.4",
|
|
33
|
+
"@webiny/cli": "5.40.0-beta.4",
|
|
34
|
+
"@webiny/handler-graphql": "5.40.0-beta.4",
|
|
35
|
+
"@webiny/plugins": "5.40.0-beta.4",
|
|
36
|
+
"@webiny/project-utils": "5.40.0-beta.4",
|
|
37
|
+
"@webiny/wcp": "5.40.0-beta.4",
|
|
38
38
|
"graphql": "15.8.0",
|
|
39
39
|
"ttypescript": "1.5.15",
|
|
40
40
|
"typescript": "4.7.4"
|
|
@@ -47,5 +47,5 @@
|
|
|
47
47
|
"access": "public",
|
|
48
48
|
"directory": "dist"
|
|
49
49
|
},
|
|
50
|
-
"gitHead": "
|
|
50
|
+
"gitHead": "42f3b1c985d6f8317d5c1084838b43a270c79f01"
|
|
51
51
|
}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { ITaskResponseResult } from "@webiny/tasks";
|
|
2
2
|
import { IEmptyTrashBinByModelTaskParams } from "../../../../types";
|
|
3
3
|
export declare class CreateDeleteEntriesTasks {
|
|
4
|
+
private taskCache;
|
|
5
|
+
private taskTrigger;
|
|
4
6
|
execute(params: IEmptyTrashBinByModelTaskParams): Promise<ITaskResponseResult>;
|
|
5
7
|
}
|
|
@@ -4,10 +4,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.CreateDeleteEntriesTasks = void 0;
|
|
7
|
-
var
|
|
8
|
-
|
|
9
|
-
const
|
|
7
|
+
var _TaskCache = require("./TaskCache");
|
|
8
|
+
var _TaskTrigger = require("./TaskTrigger");
|
|
9
|
+
const BATCH_SIZE = 50;
|
|
10
|
+
const WAITING_TIME = 5;
|
|
10
11
|
class CreateDeleteEntriesTasks {
|
|
12
|
+
taskCache = new _TaskCache.TaskCache();
|
|
13
|
+
taskTrigger = new _TaskTrigger.TaskTrigger(this.taskCache);
|
|
11
14
|
async execute(params) {
|
|
12
15
|
const {
|
|
13
16
|
input,
|
|
@@ -18,66 +21,73 @@ class CreateDeleteEntriesTasks {
|
|
|
18
21
|
store
|
|
19
22
|
} = params;
|
|
20
23
|
try {
|
|
24
|
+
if (!input.modelId) {
|
|
25
|
+
return response.error(`Missing "modelId" in the input.`);
|
|
26
|
+
}
|
|
21
27
|
const model = await context.cms.getModel(input.modelId);
|
|
22
28
|
if (!model) {
|
|
23
29
|
return response.error(`Model with ${input.modelId} not found!`);
|
|
24
30
|
}
|
|
25
|
-
const
|
|
31
|
+
const listEntriesParams = {
|
|
32
|
+
where: input.where,
|
|
33
|
+
after: input.after,
|
|
34
|
+
limit: BATCH_SIZE
|
|
35
|
+
};
|
|
26
36
|
let currentBatch = input.currentBatch || 1;
|
|
27
|
-
|
|
28
|
-
while (hasMoreEntries) {
|
|
29
|
-
const listEntriesParams = {
|
|
30
|
-
where: input.where,
|
|
31
|
-
after: input.after,
|
|
32
|
-
limit: DELETE_ENTRIES_IN_BATCH
|
|
33
|
-
};
|
|
34
|
-
const [entries, meta] = await context.cms.listDeletedEntries(model, listEntriesParams);
|
|
37
|
+
while (true) {
|
|
35
38
|
if (isAborted()) {
|
|
36
39
|
return response.aborted();
|
|
37
40
|
} else if (isCloseToTimeout()) {
|
|
41
|
+
await this.taskTrigger.execute(context, store);
|
|
38
42
|
return response.continue({
|
|
39
43
|
...input,
|
|
40
44
|
...listEntriesParams,
|
|
41
45
|
currentBatch
|
|
42
46
|
});
|
|
43
47
|
}
|
|
48
|
+
const [entries, meta] = await context.cms.listDeletedEntries(model, listEntriesParams);
|
|
49
|
+
|
|
50
|
+
// If no entries exist for the provided query, let's return done.
|
|
44
51
|
if (meta.totalCount === 0) {
|
|
45
|
-
|
|
46
|
-
return response.continue({
|
|
47
|
-
...input,
|
|
48
|
-
...listEntriesParams,
|
|
49
|
-
currentBatch,
|
|
50
|
-
processing: true
|
|
51
|
-
}, {
|
|
52
|
-
seconds: DELETE_ENTRIES_WAIT_TIME
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
return response.done("Task done: No entries to delete.");
|
|
52
|
+
return response.done(`Task done: no entries to delete for the "${input.modelId}" model.`);
|
|
56
53
|
}
|
|
57
|
-
|
|
54
|
+
|
|
55
|
+
// If no entries are returned, let's trigger the cached child tasks and continue in `processing` mode.
|
|
56
|
+
if (entries.length === 0) {
|
|
57
|
+
await this.taskTrigger.execute(context, store);
|
|
58
|
+
return response.continue({
|
|
59
|
+
...input,
|
|
60
|
+
...listEntriesParams,
|
|
61
|
+
currentBatch,
|
|
62
|
+
totalCount: meta.totalCount,
|
|
63
|
+
processing: true
|
|
64
|
+
}, {
|
|
65
|
+
seconds: WAITING_TIME
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
const entryIds = entries.map(entry => entry.id);
|
|
58
69
|
if (entryIds.length > 0) {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
70
|
+
this.taskCache.cacheTask(input.modelId, entryIds);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// No more entries paginated, let's trigger the cached child tasks and continue in `processing` mode.
|
|
74
|
+
if (!meta.hasMoreItems || !meta.cursor) {
|
|
75
|
+
await this.taskTrigger.execute(context, store);
|
|
76
|
+
return response.continue({
|
|
77
|
+
...input,
|
|
78
|
+
...listEntriesParams,
|
|
79
|
+
currentBatch,
|
|
80
|
+
totalCount: meta.totalCount,
|
|
81
|
+
processing: true
|
|
82
|
+
}, {
|
|
83
|
+
seconds: WAITING_TIME
|
|
67
84
|
});
|
|
68
85
|
}
|
|
69
|
-
|
|
70
|
-
input.after = meta.cursor;
|
|
71
|
-
input.totalCount = meta.totalCount;
|
|
86
|
+
listEntriesParams.after = meta.cursor;
|
|
72
87
|
currentBatch++;
|
|
73
88
|
}
|
|
74
|
-
return response.continue({
|
|
75
|
-
...input,
|
|
76
|
-
currentBatch
|
|
77
|
-
}, {
|
|
78
|
-
seconds: DELETE_ENTRIES_WAIT_TIME
|
|
79
|
-
});
|
|
80
89
|
} catch (ex) {
|
|
90
|
+
console.error("Error while executing CreateDeleteEntriesTasks:", ex);
|
|
81
91
|
return response.error(ex.message ?? "Error while executing CreateDeleteEntriesTasks");
|
|
82
92
|
}
|
|
83
93
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["_TaskCache","require","_TaskTrigger","BATCH_SIZE","WAITING_TIME","CreateDeleteEntriesTasks","taskCache","TaskCache","taskTrigger","TaskTrigger","execute","params","input","response","isAborted","isCloseToTimeout","context","store","modelId","error","model","cms","getModel","listEntriesParams","where","after","limit","currentBatch","aborted","continue","entries","meta","listDeletedEntries","totalCount","done","length","processing","seconds","entryIds","map","entry","id","cacheTask","hasMoreItems","cursor","ex","console","message","exports"],"sources":["CreateDeleteEntriesTasks.ts"],"sourcesContent":["import { ITaskResponseResult } from \"@webiny/tasks\";\nimport { CmsEntryListParams } from \"@webiny/api-headless-cms/types\";\nimport { TaskCache } from \"./TaskCache\";\nimport { TaskTrigger } from \"./TaskTrigger\";\nimport { IEmptyTrashBinByModelTaskParams } from \"~/types\";\n\nconst BATCH_SIZE = 50;\nconst WAITING_TIME = 5;\n\nexport class CreateDeleteEntriesTasks {\n private taskCache = new TaskCache();\n private taskTrigger = new TaskTrigger(this.taskCache);\n\n public async execute(params: IEmptyTrashBinByModelTaskParams): Promise<ITaskResponseResult> {\n const { input, response, isAborted, isCloseToTimeout, context, store } = params;\n\n try {\n if (!input.modelId) {\n return response.error(`Missing \"modelId\" in the input.`);\n }\n\n const model = await context.cms.getModel(input.modelId);\n\n if (!model) {\n return response.error(`Model with ${input.modelId} not found!`);\n }\n\n const listEntriesParams: CmsEntryListParams = {\n where: input.where,\n after: input.after,\n limit: BATCH_SIZE\n };\n\n let currentBatch = input.currentBatch || 1;\n\n while (true) {\n if (isAborted()) {\n return response.aborted();\n } else if (isCloseToTimeout()) {\n await this.taskTrigger.execute(context, store);\n return response.continue({\n ...input,\n ...listEntriesParams,\n currentBatch\n });\n }\n\n const [entries, meta] = await context.cms.listDeletedEntries(\n model,\n listEntriesParams\n );\n\n // If no entries exist for the provided query, let's return done.\n if (meta.totalCount === 0) {\n return response.done(\n `Task done: no entries to delete for the \"${input.modelId}\" model.`\n );\n }\n\n // If no entries are returned, let's trigger the cached child tasks and continue in `processing` mode.\n if (entries.length === 0) {\n await this.taskTrigger.execute(context, store);\n return response.continue(\n {\n ...input,\n ...listEntriesParams,\n currentBatch,\n totalCount: meta.totalCount,\n processing: true\n },\n { seconds: WAITING_TIME }\n );\n }\n\n const entryIds = entries.map(entry => entry.id);\n\n if (entryIds.length > 0) {\n this.taskCache.cacheTask(input.modelId, entryIds);\n }\n\n // No more entries paginated, let's trigger the cached child tasks and continue in `processing` mode.\n if (!meta.hasMoreItems || !meta.cursor) {\n await this.taskTrigger.execute(context, store);\n return response.continue(\n {\n ...input,\n ...listEntriesParams,\n currentBatch,\n totalCount: meta.totalCount,\n processing: true\n },\n { seconds: WAITING_TIME }\n );\n }\n\n listEntriesParams.after = meta.cursor;\n currentBatch++;\n }\n } catch (ex) {\n console.error(\"Error while executing CreateDeleteEntriesTasks:\", ex);\n return response.error(ex.message ?? \"Error while executing CreateDeleteEntriesTasks\");\n }\n }\n}\n"],"mappings":";;;;;;AAEA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAGA,MAAME,UAAU,GAAG,EAAE;AACrB,MAAMC,YAAY,GAAG,CAAC;AAEf,MAAMC,wBAAwB,CAAC;EAC1BC,SAAS,GAAG,IAAIC,oBAAS,CAAC,CAAC;EAC3BC,WAAW,GAAG,IAAIC,wBAAW,CAAC,IAAI,CAACH,SAAS,CAAC;EAErD,MAAaI,OAAOA,CAACC,MAAuC,EAAgC;IACxF,MAAM;MAAEC,KAAK;MAAEC,QAAQ;MAAEC,SAAS;MAAEC,gBAAgB;MAAEC,OAAO;MAAEC;IAAM,CAAC,GAAGN,MAAM;IAE/E,IAAI;MACA,IAAI,CAACC,KAAK,CAACM,OAAO,EAAE;QAChB,OAAOL,QAAQ,CAACM,KAAK,CAAE,iCAAgC,CAAC;MAC5D;MAEA,MAAMC,KAAK,GAAG,MAAMJ,OAAO,CAACK,GAAG,CAACC,QAAQ,CAACV,KAAK,CAACM,OAAO,CAAC;MAEvD,IAAI,CAACE,KAAK,EAAE;QACR,OAAOP,QAAQ,CAACM,KAAK,CAAE,cAAaP,KAAK,CAACM,OAAQ,aAAY,CAAC;MACnE;MAEA,MAAMK,iBAAqC,GAAG;QAC1CC,KAAK,EAAEZ,KAAK,CAACY,KAAK;QAClBC,KAAK,EAAEb,KAAK,CAACa,KAAK;QAClBC,KAAK,EAAEvB;MACX,CAAC;MAED,IAAIwB,YAAY,GAAGf,KAAK,CAACe,YAAY,IAAI,CAAC;MAE1C,OAAO,IAAI,EAAE;QACT,IAAIb,SAAS,CAAC,CAAC,EAAE;UACb,OAAOD,QAAQ,CAACe,OAAO,CAAC,CAAC;QAC7B,CAAC,MAAM,IAAIb,gBAAgB,CAAC,CAAC,EAAE;UAC3B,MAAM,IAAI,CAACP,WAAW,CAACE,OAAO,CAACM,OAAO,EAAEC,KAAK,CAAC;UAC9C,OAAOJ,QAAQ,CAACgB,QAAQ,CAAC;YACrB,GAAGjB,KAAK;YACR,GAAGW,iBAAiB;YACpBI;UACJ,CAAC,CAAC;QACN;QAEA,MAAM,CAACG,OAAO,EAAEC,IAAI,CAAC,GAAG,MAAMf,OAAO,CAACK,GAAG,CAACW,kBAAkB,CACxDZ,KAAK,EACLG,iBACJ,CAAC;;QAED;QACA,IAAIQ,IAAI,CAACE,UAAU,KAAK,CAAC,EAAE;UACvB,OAAOpB,QAAQ,CAACqB,IAAI,CACf,4CAA2CtB,KAAK,CAACM,OAAQ,UAC9D,CAAC;QACL;;QAEA;QACA,IAAIY,OAAO,CAACK,MAAM,KAAK,CAAC,EAAE;UACtB,MAAM,IAAI,CAAC3B,WAAW,CAACE,OAAO,CAACM,OAAO,EAAEC,KAAK,CAAC;UAC9C,OAAOJ,QAAQ,CAACgB,QAAQ,CACpB;YACI,GAAGjB,KAAK;YACR,GAAGW,iBAAiB;YACpBI,YAAY;YACZM,UAAU,EAAEF,IAAI,CAACE,UAAU;YAC3BG,UAAU,EAAE;UAChB,CAAC,EACD;YAAEC,OAAO,EAAEjC;UAAa,CAC5B,CAAC;QACL;QAEA,MAAMkC,QAAQ,GAAGR,OAAO,CAACS,GAAG,CAACC,KAAK,IAAIA,KAAK,CAACC,EAAE,CAAC;QAE/C,IAAIH,QAAQ,CAACH,MAAM,GAAG,CAAC,EAAE;UACrB,IAAI,CAAC7B,SAAS,CAACoC,SAAS,CAAC9B,KAAK,CAACM,OAAO,EAAEoB,QAAQ,CAAC;QACrD;;QAEA;QACA,IAAI,CAACP,IAAI,CAACY,YAAY,IAAI,CAACZ,IAAI,CAACa,MAAM,EAAE;UACpC,MAAM,IAAI,CAACpC,WAAW,CAACE,OAAO,CAACM,OAAO,EAAEC,KAAK,CAAC;UAC9C,OAAOJ,QAAQ,CAACgB,QAAQ,CACpB;YACI,GAAGjB,KAAK;YACR,GAAGW,iBAAiB;YACpBI,YAAY;YACZM,UAAU,EAAEF,IAAI,CAACE,UAAU;YAC3BG,UAAU,EAAE;UAChB,CAAC,EACD;YAAEC,OAAO,EAAEjC;UAAa,CAC5B,CAAC;QACL;QAEAmB,iBAAiB,CAACE,KAAK,GAAGM,IAAI,CAACa,MAAM;QACrCjB,YAAY,EAAE;MAClB;IACJ,CAAC,CAAC,OAAOkB,EAAE,EAAE;MACTC,OAAO,CAAC3B,KAAK,CAAC,iDAAiD,EAAE0B,EAAE,CAAC;MACpE,OAAOhC,QAAQ,CAACM,KAAK,CAAC0B,EAAE,CAACE,OAAO,IAAI,gDAAgD,CAAC;IACzF;EACJ;AACJ;AAACC,OAAA,CAAA3C,wBAAA,GAAAA,wBAAA","ignoreList":[]}
|
|
@@ -40,7 +40,7 @@ class ProcessDeleteEntriesTasks {
|
|
|
40
40
|
seconds: ZIP_PAGES_WAIT_TIME
|
|
41
41
|
});
|
|
42
42
|
}
|
|
43
|
-
return response.done(`Task done:
|
|
43
|
+
return response.done(`Task done: trash bin for the "${input.modelId}" model has been emptied.`);
|
|
44
44
|
} catch (ex) {
|
|
45
45
|
return response.error(ex.message ?? "Error while executing ProcessDeleteEntriesTasks");
|
|
46
46
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_tasks","require","_types","ZIP_PAGES_WAIT_TIME","exports","ProcessDeleteEntriesTasks","execute","params","response","input","isAborted","isCloseToTimeout","context","store","aborted","continue","result","tasks","listTasks","where","parentId","getTask","id","definitionId","EntriesTask","DeleteTrashBinEntries","taskStatus_in","TaskDataStatus","RUNNING","PENDING","limit","items","length","seconds","done","modelId","ex","error","message"],"sources":["ProcessDeleteEntriesTasks.ts"],"sourcesContent":["import { ITaskResponseResult, TaskDataStatus } from \"@webiny/tasks\";\nimport { EntriesTask, IEmptyTrashBinByModelTaskParams } from \"~/types\";\n\nexport const ZIP_PAGES_WAIT_TIME = 10;\n\nexport class ProcessDeleteEntriesTasks {\n public async execute(params: IEmptyTrashBinByModelTaskParams): Promise<ITaskResponseResult> {\n const { response, input, isAborted, isCloseToTimeout, context, store } = params;\n\n try {\n if (isAborted()) {\n return response.aborted();\n } else if (isCloseToTimeout()) {\n return response.continue({\n ...input\n });\n }\n\n const result = await context.tasks.listTasks({\n where: {\n parentId: store.getTask().id,\n definitionId: EntriesTask.DeleteTrashBinEntries,\n taskStatus_in: [TaskDataStatus.RUNNING, TaskDataStatus.PENDING]\n },\n limit: 1\n });\n\n if (result.items.length > 0) {\n return response.continue(\n {\n ...input\n },\n {\n seconds: ZIP_PAGES_WAIT_TIME\n }\n );\n }\n\n return response.done(\n `Task done:
|
|
1
|
+
{"version":3,"names":["_tasks","require","_types","ZIP_PAGES_WAIT_TIME","exports","ProcessDeleteEntriesTasks","execute","params","response","input","isAborted","isCloseToTimeout","context","store","aborted","continue","result","tasks","listTasks","where","parentId","getTask","id","definitionId","EntriesTask","DeleteTrashBinEntries","taskStatus_in","TaskDataStatus","RUNNING","PENDING","limit","items","length","seconds","done","modelId","ex","error","message"],"sources":["ProcessDeleteEntriesTasks.ts"],"sourcesContent":["import { ITaskResponseResult, TaskDataStatus } from \"@webiny/tasks\";\nimport { EntriesTask, IEmptyTrashBinByModelTaskParams } from \"~/types\";\n\nexport const ZIP_PAGES_WAIT_TIME = 10;\n\nexport class ProcessDeleteEntriesTasks {\n public async execute(params: IEmptyTrashBinByModelTaskParams): Promise<ITaskResponseResult> {\n const { response, input, isAborted, isCloseToTimeout, context, store } = params;\n\n try {\n if (isAborted()) {\n return response.aborted();\n } else if (isCloseToTimeout()) {\n return response.continue({\n ...input\n });\n }\n\n const result = await context.tasks.listTasks({\n where: {\n parentId: store.getTask().id,\n definitionId: EntriesTask.DeleteTrashBinEntries,\n taskStatus_in: [TaskDataStatus.RUNNING, TaskDataStatus.PENDING]\n },\n limit: 1\n });\n\n if (result.items.length > 0) {\n return response.continue(\n {\n ...input\n },\n {\n seconds: ZIP_PAGES_WAIT_TIME\n }\n );\n }\n\n return response.done(\n `Task done: trash bin for the \"${input.modelId}\" model has been emptied.`\n );\n } catch (ex) {\n return response.error(ex.message ?? \"Error while executing ProcessDeleteEntriesTasks\");\n }\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAEO,MAAME,mBAAmB,GAAAC,OAAA,CAAAD,mBAAA,GAAG,EAAE;AAE9B,MAAME,yBAAyB,CAAC;EACnC,MAAaC,OAAOA,CAACC,MAAuC,EAAgC;IACxF,MAAM;MAAEC,QAAQ;MAAEC,KAAK;MAAEC,SAAS;MAAEC,gBAAgB;MAAEC,OAAO;MAAEC;IAAM,CAAC,GAAGN,MAAM;IAE/E,IAAI;MACA,IAAIG,SAAS,CAAC,CAAC,EAAE;QACb,OAAOF,QAAQ,CAACM,OAAO,CAAC,CAAC;MAC7B,CAAC,MAAM,IAAIH,gBAAgB,CAAC,CAAC,EAAE;QAC3B,OAAOH,QAAQ,CAACO,QAAQ,CAAC;UACrB,GAAGN;QACP,CAAC,CAAC;MACN;MAEA,MAAMO,MAAM,GAAG,MAAMJ,OAAO,CAACK,KAAK,CAACC,SAAS,CAAC;QACzCC,KAAK,EAAE;UACHC,QAAQ,EAAEP,KAAK,CAACQ,OAAO,CAAC,CAAC,CAACC,EAAE;UAC5BC,YAAY,EAAEC,kBAAW,CAACC,qBAAqB;UAC/CC,aAAa,EAAE,CAACC,qBAAc,CAACC,OAAO,EAAED,qBAAc,CAACE,OAAO;QAClE,CAAC;QACDC,KAAK,EAAE;MACX,CAAC,CAAC;MAEF,IAAId,MAAM,CAACe,KAAK,CAACC,MAAM,GAAG,CAAC,EAAE;QACzB,OAAOxB,QAAQ,CAACO,QAAQ,CACpB;UACI,GAAGN;QACP,CAAC,EACD;UACIwB,OAAO,EAAE9B;QACb,CACJ,CAAC;MACL;MAEA,OAAOK,QAAQ,CAAC0B,IAAI,CACf,iCAAgCzB,KAAK,CAAC0B,OAAQ,2BACnD,CAAC;IACL,CAAC,CAAC,OAAOC,EAAE,EAAE;MACT,OAAO5B,QAAQ,CAAC6B,KAAK,CAACD,EAAE,CAACE,OAAO,IAAI,iDAAiD,CAAC;IAC1F;EACJ;AACJ;AAAClC,OAAA,CAAAC,yBAAA,GAAAA,yBAAA","ignoreList":[]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.TaskCache = void 0;
|
|
7
|
+
class TaskCache {
|
|
8
|
+
taskCache = [];
|
|
9
|
+
cacheTask(modelId, entryIds) {
|
|
10
|
+
this.taskCache.push({
|
|
11
|
+
modelId,
|
|
12
|
+
entryIds
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
getTasks() {
|
|
16
|
+
return this.taskCache;
|
|
17
|
+
}
|
|
18
|
+
clear() {
|
|
19
|
+
this.taskCache = [];
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.TaskCache = TaskCache;
|
|
23
|
+
|
|
24
|
+
//# sourceMappingURL=TaskCache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["TaskCache","taskCache","cacheTask","modelId","entryIds","push","getTasks","clear","exports"],"sources":["TaskCache.ts"],"sourcesContent":["interface TaskCacheItem {\n modelId: string;\n entryIds: string[];\n}\n\nexport class TaskCache {\n private taskCache: TaskCacheItem[] = [];\n\n cacheTask(modelId: string, entryIds: string[]): void {\n this.taskCache.push({ modelId, entryIds });\n }\n\n getTasks(): TaskCacheItem[] {\n return this.taskCache;\n }\n\n clear(): void {\n this.taskCache = [];\n }\n}\n"],"mappings":";;;;;;AAKO,MAAMA,SAAS,CAAC;EACXC,SAAS,GAAoB,EAAE;EAEvCC,SAASA,CAACC,OAAe,EAAEC,QAAkB,EAAQ;IACjD,IAAI,CAACH,SAAS,CAACI,IAAI,CAAC;MAAEF,OAAO;MAAEC;IAAS,CAAC,CAAC;EAC9C;EAEAE,QAAQA,CAAA,EAAoB;IACxB,OAAO,IAAI,CAACL,SAAS;EACzB;EAEAM,KAAKA,CAAA,EAAS;IACV,IAAI,CAACN,SAAS,GAAG,EAAE;EACvB;AACJ;AAACO,OAAA,CAAAR,SAAA,GAAAA,SAAA","ignoreList":[]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ITaskManagerStore } from "@webiny/tasks";
|
|
2
|
+
import { TaskCache } from "./TaskCache";
|
|
3
|
+
import { HcmsTasksContext, IEmptyTrashBinByModelInput } from "../../../../types";
|
|
4
|
+
export declare class TaskTrigger {
|
|
5
|
+
private taskCache;
|
|
6
|
+
constructor(taskCache: TaskCache);
|
|
7
|
+
execute(context: HcmsTasksContext, store: ITaskManagerStore<IEmptyTrashBinByModelInput>): Promise<void>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.TaskTrigger = void 0;
|
|
7
|
+
var _types = require("../../../../types");
|
|
8
|
+
class TaskTrigger {
|
|
9
|
+
constructor(taskCache) {
|
|
10
|
+
this.taskCache = taskCache;
|
|
11
|
+
}
|
|
12
|
+
async execute(context, store) {
|
|
13
|
+
const tasks = this.taskCache.getTasks();
|
|
14
|
+
if (tasks.length === 0) {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
for (const task of tasks) {
|
|
18
|
+
try {
|
|
19
|
+
await context.tasks.trigger({
|
|
20
|
+
definition: _types.EntriesTask.DeleteTrashBinEntries,
|
|
21
|
+
name: `Headless CMS - Delete Entries - ${task.modelId}`,
|
|
22
|
+
parent: store.getTask(),
|
|
23
|
+
input: {
|
|
24
|
+
modelId: task.modelId,
|
|
25
|
+
entryIds: task.entryIds
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
} catch (error) {
|
|
29
|
+
console.error(`Error triggering task for model ${task.modelId}:`, error);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Clear the cache after processing
|
|
34
|
+
this.taskCache.clear();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
exports.TaskTrigger = TaskTrigger;
|
|
38
|
+
|
|
39
|
+
//# sourceMappingURL=TaskTrigger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_types","require","TaskTrigger","constructor","taskCache","execute","context","store","tasks","getTasks","length","task","trigger","definition","EntriesTask","DeleteTrashBinEntries","name","modelId","parent","getTask","input","entryIds","error","console","clear","exports"],"sources":["TaskTrigger.ts"],"sourcesContent":["import { ITaskManagerStore } from \"@webiny/tasks\";\nimport { TaskCache } from \"./TaskCache\";\nimport {\n EntriesTask,\n HcmsTasksContext,\n IDeleteTrashBinEntriesInput,\n IEmptyTrashBinByModelInput\n} from \"~/types\";\n\nexport class TaskTrigger {\n constructor(private taskCache: TaskCache) {}\n\n async execute(context: HcmsTasksContext, store: ITaskManagerStore<IEmptyTrashBinByModelInput>) {\n const tasks = this.taskCache.getTasks();\n if (tasks.length === 0) {\n return;\n }\n\n for (const task of tasks) {\n try {\n await context.tasks.trigger<IDeleteTrashBinEntriesInput>({\n definition: EntriesTask.DeleteTrashBinEntries,\n name: `Headless CMS - Delete Entries - ${task.modelId}`,\n parent: store.getTask(),\n input: {\n modelId: task.modelId,\n entryIds: task.entryIds\n }\n });\n } catch (error) {\n console.error(`Error triggering task for model ${task.modelId}:`, error);\n }\n }\n\n // Clear the cache after processing\n this.taskCache.clear();\n }\n}\n"],"mappings":";;;;;;AAEA,IAAAA,MAAA,GAAAC,OAAA;AAOO,MAAMC,WAAW,CAAC;EACrBC,WAAWA,CAASC,SAAoB,EAAE;IAAA,KAAtBA,SAAoB,GAApBA,SAAoB;EAAG;EAE3C,MAAMC,OAAOA,CAACC,OAAyB,EAAEC,KAAoD,EAAE;IAC3F,MAAMC,KAAK,GAAG,IAAI,CAACJ,SAAS,CAACK,QAAQ,CAAC,CAAC;IACvC,IAAID,KAAK,CAACE,MAAM,KAAK,CAAC,EAAE;MACpB;IACJ;IAEA,KAAK,MAAMC,IAAI,IAAIH,KAAK,EAAE;MACtB,IAAI;QACA,MAAMF,OAAO,CAACE,KAAK,CAACI,OAAO,CAA8B;UACrDC,UAAU,EAAEC,kBAAW,CAACC,qBAAqB;UAC7CC,IAAI,EAAG,mCAAkCL,IAAI,CAACM,OAAQ,EAAC;UACvDC,MAAM,EAAEX,KAAK,CAACY,OAAO,CAAC,CAAC;UACvBC,KAAK,EAAE;YACHH,OAAO,EAAEN,IAAI,CAACM,OAAO;YACrBI,QAAQ,EAAEV,IAAI,CAACU;UACnB;QACJ,CAAC,CAAC;MACN,CAAC,CAAC,OAAOC,KAAK,EAAE;QACZC,OAAO,CAACD,KAAK,CAAE,mCAAkCX,IAAI,CAACM,OAAQ,GAAE,EAAEK,KAAK,CAAC;MAC5E;IACJ;;IAEA;IACA,IAAI,CAAClB,SAAS,CAACoB,KAAK,CAAC,CAAC;EAC1B;AACJ;AAACC,OAAA,CAAAvB,WAAA,GAAAA,WAAA","ignoreList":[]}
|