@webiny/api-headless-cms-tasks 5.40.0-beta.3 → 5.40.0-beta.5

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/api-headless-cms-tasks",
3
- "version": "5.40.0-beta.3",
3
+ "version": "5.40.0-beta.5",
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.3",
17
- "@webiny/handler": "5.40.0-beta.3",
18
- "@webiny/handler-aws": "5.40.0-beta.3",
19
- "@webiny/tasks": "5.40.0-beta.3"
16
+ "@webiny/api-headless-cms": "5.40.0-beta.5",
17
+ "@webiny/handler": "5.40.0-beta.5",
18
+ "@webiny/handler-aws": "5.40.0-beta.5",
19
+ "@webiny/tasks": "5.40.0-beta.5"
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.3",
28
- "@webiny/api-admin-users": "5.40.0-beta.3",
29
- "@webiny/api-i18n": "5.40.0-beta.3",
30
- "@webiny/api-security": "5.40.0-beta.3",
31
- "@webiny/api-tenancy": "5.40.0-beta.3",
32
- "@webiny/api-wcp": "5.40.0-beta.3",
33
- "@webiny/cli": "5.40.0-beta.3",
34
- "@webiny/handler-graphql": "5.40.0-beta.3",
35
- "@webiny/plugins": "5.40.0-beta.3",
36
- "@webiny/project-utils": "5.40.0-beta.3",
37
- "@webiny/wcp": "5.40.0-beta.3",
27
+ "@webiny/api": "5.40.0-beta.5",
28
+ "@webiny/api-admin-users": "5.40.0-beta.5",
29
+ "@webiny/api-i18n": "5.40.0-beta.5",
30
+ "@webiny/api-security": "5.40.0-beta.5",
31
+ "@webiny/api-tenancy": "5.40.0-beta.5",
32
+ "@webiny/api-wcp": "5.40.0-beta.5",
33
+ "@webiny/cli": "5.40.0-beta.5",
34
+ "@webiny/handler-graphql": "5.40.0-beta.5",
35
+ "@webiny/plugins": "5.40.0-beta.5",
36
+ "@webiny/project-utils": "5.40.0-beta.5",
37
+ "@webiny/wcp": "5.40.0-beta.5",
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": "638d8b84063906cd1aa979ed6e0487ad26fbcf2f"
50
+ "gitHead": "04482b686c63fdadebd4c6c1db7595af1140cfc7"
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 _types = require("../../../../types");
8
- const DELETE_ENTRIES_IN_BATCH = 50;
9
- const DELETE_ENTRIES_WAIT_TIME = 5;
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 totalCount = input.totalCount || 0;
31
+ const listEntriesParams = {
32
+ where: input.where,
33
+ after: input.after,
34
+ limit: BATCH_SIZE
35
+ };
26
36
  let currentBatch = input.currentBatch || 1;
27
- let hasMoreEntries = true;
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
- if (totalCount > 0) {
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
- const entryIds = entries.map(entry => entry.entryId);
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
- await context.tasks.trigger({
60
- definition: _types.EntriesTask.DeleteTrashBinEntries,
61
- name: `Headless CMS - Delete Entries - ${model.name} - #${currentBatch}`,
62
- parent: store.getTask(),
63
- input: {
64
- modelId: input.modelId,
65
- entryIds
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
- hasMoreEntries = meta.hasMoreItems;
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":["_types","require","DELETE_ENTRIES_IN_BATCH","DELETE_ENTRIES_WAIT_TIME","CreateDeleteEntriesTasks","execute","params","input","response","isAborted","isCloseToTimeout","context","store","model","cms","getModel","modelId","error","totalCount","currentBatch","hasMoreEntries","listEntriesParams","where","after","limit","entries","meta","listDeletedEntries","aborted","continue","processing","seconds","done","entryIds","map","entry","entryId","length","tasks","trigger","definition","EntriesTask","DeleteTrashBinEntries","name","parent","getTask","hasMoreItems","cursor","ex","message","exports"],"sources":["CreateDeleteEntriesTasks.ts"],"sourcesContent":["import { ITaskResponseResult } from \"@webiny/tasks\";\nimport { CmsEntryListParams } from \"@webiny/api-headless-cms/types\";\nimport { EntriesTask, IDeleteTrashBinEntriesInput, IEmptyTrashBinByModelTaskParams } from \"~/types\";\n\nconst DELETE_ENTRIES_IN_BATCH = 50;\nconst DELETE_ENTRIES_WAIT_TIME = 5;\n\nexport class CreateDeleteEntriesTasks {\n public async execute(params: IEmptyTrashBinByModelTaskParams): Promise<ITaskResponseResult> {\n const { input, response, isAborted, isCloseToTimeout, context, store } = params;\n\n try {\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 totalCount = input.totalCount || 0;\n let currentBatch = input.currentBatch || 1;\n let hasMoreEntries = true;\n\n while (hasMoreEntries) {\n const listEntriesParams: CmsEntryListParams = {\n where: input.where,\n after: input.after,\n limit: DELETE_ENTRIES_IN_BATCH\n };\n\n const [entries, meta] = await context.cms.listDeletedEntries(\n model,\n listEntriesParams\n );\n\n if (isAborted()) {\n return response.aborted();\n } else if (isCloseToTimeout()) {\n return response.continue({\n ...input,\n ...listEntriesParams,\n currentBatch\n });\n }\n\n if (meta.totalCount === 0) {\n if (totalCount > 0) {\n return response.continue(\n {\n ...input,\n ...listEntriesParams,\n currentBatch,\n processing: true\n },\n {\n seconds: DELETE_ENTRIES_WAIT_TIME\n }\n );\n }\n\n return response.done(\"Task done: No entries to delete.\");\n }\n\n const entryIds = entries.map(entry => entry.entryId);\n\n if (entryIds.length > 0) {\n await context.tasks.trigger<IDeleteTrashBinEntriesInput>({\n definition: EntriesTask.DeleteTrashBinEntries,\n name: `Headless CMS - Delete Entries - ${model.name} - #${currentBatch}`,\n parent: store.getTask(),\n input: {\n modelId: input.modelId,\n entryIds\n }\n });\n }\n\n hasMoreEntries = meta.hasMoreItems;\n input.after = meta.cursor;\n input.totalCount = meta.totalCount;\n currentBatch++;\n }\n\n return response.continue(\n {\n ...input,\n currentBatch\n },\n {\n seconds: DELETE_ENTRIES_WAIT_TIME\n }\n );\n } catch (ex) {\n return response.error(ex.message ?? \"Error while executing CreateDeleteEntriesTasks\");\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
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: The trash bin has been emptied for the ${input.modelId} model.`);
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: The trash bin has been emptied for the ${input.modelId} model.`\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,qDAAoDzB,KAAK,CAAC0B,OAAQ,SACvE,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":[]}
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,11 @@
1
+ interface TaskCacheItem {
2
+ modelId: string;
3
+ entryIds: string[];
4
+ }
5
+ export declare class TaskCache {
6
+ private taskCache;
7
+ cacheTask(modelId: string, entryIds: string[]): void;
8
+ getTasks(): TaskCacheItem[];
9
+ clear(): void;
10
+ }
11
+ export {};
@@ -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":[]}