@webiny/api-headless-cms-es-tasks 6.4.4-beta.6 → 6.4.4-beta.8
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 +15 -16
- package/tasks/MockDataManager/MockDataManager.js +7 -6
- package/tasks/MockDataManager/MockDataManager.js.map +1 -1
- package/tasks/MockDataManager/createModelAndGroup.js +2 -2
- package/tasks/MockDataManager/createModelAndGroup.js.map +1 -1
- package/tasks/MockDataManagerTask.d.ts +1 -0
- package/tasks/MockDataManagerTask.js +12 -10
- package/tasks/MockDataManagerTask.js.map +1 -1
- package/utils/createIndex.d.ts +4 -4
- package/utils/createIndex.js +6 -10
- package/utils/createIndex.js.map +1 -1
- package/utils/disableIndexing.d.ts +4 -2
- package/utils/disableIndexing.js +5 -3
- package/utils/disableIndexing.js.map +1 -1
- package/utils/enableIndexing.d.ts +4 -2
- package/utils/enableIndexing.js +5 -3
- package/utils/enableIndexing.js.map +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/api-headless-cms-es-tasks",
|
|
3
|
-
"version": "6.4.4-beta.
|
|
3
|
+
"version": "6.4.4-beta.8",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./index.js",
|
|
@@ -17,23 +17,22 @@
|
|
|
17
17
|
},
|
|
18
18
|
"license": "MIT",
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@webiny/api-core": "6.4.4-beta.
|
|
21
|
-
"@webiny/api-headless-cms": "6.4.4-beta.
|
|
22
|
-
"@webiny/api-headless-cms-ddb-es": "6.4.4-beta.
|
|
23
|
-
"@webiny/api-opensearch": "6.4.4-beta.
|
|
24
|
-
"@webiny/background-tasks": "6.4.4-beta.
|
|
25
|
-
"@webiny/
|
|
26
|
-
"@webiny/handler": "6.4.4-beta.
|
|
27
|
-
"@webiny/
|
|
28
|
-
"@webiny/utils": "6.4.4-beta.6"
|
|
20
|
+
"@webiny/api-core": "6.4.4-beta.8",
|
|
21
|
+
"@webiny/api-headless-cms": "6.4.4-beta.8",
|
|
22
|
+
"@webiny/api-headless-cms-ddb-es": "6.4.4-beta.8",
|
|
23
|
+
"@webiny/api-opensearch": "6.4.4-beta.8",
|
|
24
|
+
"@webiny/background-tasks": "6.4.4-beta.8",
|
|
25
|
+
"@webiny/handler": "6.4.4-beta.8",
|
|
26
|
+
"@webiny/handler-aws": "6.4.4-beta.8",
|
|
27
|
+
"@webiny/utils": "6.4.4-beta.8"
|
|
29
28
|
},
|
|
30
29
|
"devDependencies": {
|
|
31
|
-
"@webiny/api": "6.4.4-beta.
|
|
32
|
-
"@webiny/build-tools": "6.4.4-beta.
|
|
33
|
-
"@webiny/handler-graphql": "6.4.4-beta.
|
|
34
|
-
"@webiny/plugins": "6.4.4-beta.
|
|
35
|
-
"@webiny/project-utils": "6.4.4-beta.
|
|
36
|
-
"@webiny/wcp": "6.4.4-beta.
|
|
30
|
+
"@webiny/api": "6.4.4-beta.8",
|
|
31
|
+
"@webiny/build-tools": "6.4.4-beta.8",
|
|
32
|
+
"@webiny/handler-graphql": "6.4.4-beta.8",
|
|
33
|
+
"@webiny/plugins": "6.4.4-beta.8",
|
|
34
|
+
"@webiny/project-utils": "6.4.4-beta.8",
|
|
35
|
+
"@webiny/wcp": "6.4.4-beta.8",
|
|
37
36
|
"typescript": "6.0.3",
|
|
38
37
|
"vitest": "4.1.10"
|
|
39
38
|
},
|
|
@@ -3,6 +3,7 @@ import { calculateAmounts } from "./calculateAmounts.js";
|
|
|
3
3
|
import { WAIT_MAX_SECONDS, calculateSeconds } from "./calculateSeconds.js";
|
|
4
4
|
import { createModelAndGroup } from "./createModelAndGroup.js";
|
|
5
5
|
import { disableIndexing, enableIndexing } from "../../utils/index.js";
|
|
6
|
+
import { CmsModelOpenSearchIndexProvider } from "@webiny/api-headless-cms-ddb-es/features/CmsModelOpenSearchIndex/CmsModelOpenSearchIndexProvider.js";
|
|
6
7
|
import { MOCK_DATA_CREATOR_TASK_ID } from "../MockDataCreatorTask.js";
|
|
7
8
|
class MockDataManager {
|
|
8
9
|
constructor(context){
|
|
@@ -22,12 +23,11 @@ class MockDataManager {
|
|
|
22
23
|
}, {
|
|
23
24
|
seconds: input.seconds || WAIT_MAX_SECONDS
|
|
24
25
|
});
|
|
25
|
-
await
|
|
26
|
+
const model = (await this.context.cms.listModels()).find((m)=>m.modelId === input.modelId);
|
|
27
|
+
if (model) await enableIndexing({
|
|
26
28
|
client: this.context.opensearch,
|
|
27
|
-
model
|
|
28
|
-
|
|
29
|
-
tenant: "root"
|
|
30
|
-
}
|
|
29
|
+
model,
|
|
30
|
+
indexProvider: this.context.container.resolve(CmsModelOpenSearchIndexProvider)
|
|
31
31
|
});
|
|
32
32
|
return controller.response.done();
|
|
33
33
|
}
|
|
@@ -39,7 +39,8 @@ class MockDataManager {
|
|
|
39
39
|
if ("string" == typeof result) return controller.response.done(result);
|
|
40
40
|
await disableIndexing({
|
|
41
41
|
model: result.model,
|
|
42
|
-
client: this.context.opensearch
|
|
42
|
+
client: this.context.opensearch,
|
|
43
|
+
indexProvider: this.context.container.resolve(CmsModelOpenSearchIndexProvider)
|
|
43
44
|
});
|
|
44
45
|
const { amountOfTasks, amountOfRecords } = calculateAmounts(input.amount);
|
|
45
46
|
const seconds = calculateSeconds(amountOfRecords);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks/MockDataManager/MockDataManager.js","sources":["../../../src/tasks/MockDataManager/MockDataManager.ts"],"sourcesContent":["import { TaskDataStatus } from \"@webiny/background-tasks/api\";\nimport type {\n IMockDataManagerInput,\n IMockDataManagerOutput\n} from \"~/tasks/MockDataManager/types.js\";\nimport { calculateAmounts } from \"./calculateAmounts.js\";\nimport type { IMockDataCreatorInput } from \"~/tasks/MockDataCreator/types.js\";\nimport { calculateSeconds, WAIT_MAX_SECONDS } from \"./calculateSeconds.js\";\nimport { createModelAndGroup } from \"~/tasks/MockDataManager/createModelAndGroup.js\";\nimport type { Context } from \"~/types.js\";\nimport { disableIndexing, enableIndexing } from \"~/utils/index.js\";\nimport { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport { MOCK_DATA_CREATOR_TASK_ID } from \"~/tasks/MockDataCreatorTask.js\";\nimport { TaskService } from \"@webiny/api-core/features/task/TaskService/index.js\";\n\nexport class MockDataManager<I extends IMockDataManagerInput, O extends IMockDataManagerOutput> {\n constructor(private context: Context) {}\n\n public async execute(\n params: TaskDefinition.RunParams<I, O>\n ): Promise<TaskDefinition.Result<I, O>> {\n const { input, controller } = params;\n\n const taskId = controller.state.getTask().id;\n if (controller.runtime.isAborted()) {\n await this.abortChildTasks(this.context, taskId);\n return controller.response.aborted();\n } else if (input.seconds) {\n const items = await this.listChildTasksNotDone(this.context, taskId);\n\n
|
|
1
|
+
{"version":3,"file":"tasks/MockDataManager/MockDataManager.js","sources":["../../../src/tasks/MockDataManager/MockDataManager.ts"],"sourcesContent":["import { TaskDataStatus } from \"@webiny/background-tasks/api\";\nimport type {\n IMockDataManagerInput,\n IMockDataManagerOutput\n} from \"~/tasks/MockDataManager/types.js\";\nimport { calculateAmounts } from \"./calculateAmounts.js\";\nimport type { IMockDataCreatorInput } from \"~/tasks/MockDataCreator/types.js\";\nimport { calculateSeconds, WAIT_MAX_SECONDS } from \"./calculateSeconds.js\";\nimport { createModelAndGroup } from \"~/tasks/MockDataManager/createModelAndGroup.js\";\nimport type { Context } from \"~/types.js\";\nimport { disableIndexing, enableIndexing } from \"~/utils/index.js\";\nimport { CmsModelOpenSearchIndexProvider } from \"@webiny/api-headless-cms-ddb-es/features/CmsModelOpenSearchIndex/CmsModelOpenSearchIndexProvider.js\";\nimport { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport { MOCK_DATA_CREATOR_TASK_ID } from \"~/tasks/MockDataCreatorTask.js\";\nimport { TaskService } from \"@webiny/api-core/features/task/TaskService/index.js\";\n\nexport class MockDataManager<I extends IMockDataManagerInput, O extends IMockDataManagerOutput> {\n constructor(private context: Context) {}\n\n public async execute(\n params: TaskDefinition.RunParams<I, O>\n ): Promise<TaskDefinition.Result<I, O>> {\n const { input, controller } = params;\n\n const taskId = controller.state.getTask().id;\n if (controller.runtime.isAborted()) {\n await this.abortChildTasks(this.context, taskId);\n return controller.response.aborted();\n } else if (input.seconds) {\n const items = await this.listChildTasksNotDone(this.context, taskId);\n\n if (items.length > 0) {\n return controller.response.continue(\n {\n ...input\n },\n {\n seconds: input.seconds || WAIT_MAX_SECONDS\n }\n );\n }\n\n const model = (await this.context.cms.listModels()).find(\n m => m.modelId === input.modelId\n );\n if (model) {\n await enableIndexing({\n client: this.context.opensearch,\n model,\n indexProvider: this.context.container.resolve(CmsModelOpenSearchIndexProvider)\n });\n }\n return controller.response.done();\n }\n\n const result = await createModelAndGroup({\n context: this.context,\n modelId: input.modelId,\n overwrite: input.overwrite\n });\n if (typeof result === \"string\") {\n return controller.response.done(result);\n }\n\n await disableIndexing({\n model: result.model,\n client: this.context.opensearch,\n indexProvider: this.context.container.resolve(CmsModelOpenSearchIndexProvider)\n });\n\n const { amountOfTasks, amountOfRecords } = calculateAmounts(input.amount);\n\n const seconds = calculateSeconds(amountOfRecords);\n\n for (let current = 0; current < amountOfTasks; current++) {\n await controller.task.trigger<IMockDataCreatorInput>({\n definition: MOCK_DATA_CREATOR_TASK_ID,\n input: {\n totalAmount: amountOfRecords,\n createdAmount: 0\n },\n name: `Mock Data Creator Task #${current + 1} of ${amountOfTasks}`\n });\n }\n\n return controller.response.continue(\n {\n ...input,\n seconds,\n amountOfTasks,\n amountOfRecords\n },\n {\n seconds\n }\n );\n }\n\n private async listChildTasksNotDone(context: Context, id: string): Promise<TaskService.Task[]> {\n const { items } = await context.tasks.listTasks({\n where: {\n parentId: id,\n taskStatus_in: [TaskDataStatus.PENDING, TaskDataStatus.RUNNING]\n },\n limit: 10000\n });\n return items;\n }\n\n private async abortChildTasks(context: Context, id: string): Promise<void> {\n const items = await this.listChildTasksNotDone(context, id);\n for (const item of items) {\n await context.tasks.abort({\n id: item.id,\n message: \"Aborted by parent task.\"\n });\n }\n }\n}\n"],"names":["MockDataManager","context","params","input","controller","taskId","items","WAIT_MAX_SECONDS","model","m","enableIndexing","CmsModelOpenSearchIndexProvider","result","createModelAndGroup","disableIndexing","amountOfTasks","amountOfRecords","calculateAmounts","seconds","calculateSeconds","current","MOCK_DATA_CREATOR_TASK_ID","id","TaskDataStatus","item"],"mappings":";;;;;;;AAgBO,MAAMA;IACT,YAAoBC,OAAgB,CAAE;aAAlBA,OAAO,GAAPA;IAAmB;IAEvC,MAAa,QACTC,MAAsC,EACF;QACpC,MAAM,EAAEC,KAAK,EAAEC,UAAU,EAAE,GAAGF;QAE9B,MAAMG,SAASD,WAAW,KAAK,CAAC,OAAO,GAAG,EAAE;QAC5C,IAAIA,WAAW,OAAO,CAAC,SAAS,IAAI;YAChC,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,EAAEC;YACzC,OAAOD,WAAW,QAAQ,CAAC,OAAO;QACtC;QAAO,IAAID,MAAM,OAAO,EAAE;YACtB,MAAMG,QAAQ,MAAM,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAED;YAE7D,IAAIC,MAAM,MAAM,GAAG,GACf,OAAOF,WAAW,QAAQ,CAAC,QAAQ,CAC/B;gBACI,GAAGD,KAAK;YACZ,GACA;gBACI,SAASA,MAAM,OAAO,IAAII;YAC9B;YAIR,MAAMC,QAAS,OAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAC,EAAG,IAAI,CACpDC,CAAAA,IAAKA,EAAE,OAAO,KAAKN,MAAM,OAAO;YAEpC,IAAIK,OACA,MAAME,eAAe;gBACjB,QAAQ,IAAI,CAAC,OAAO,CAAC,UAAU;gBAC/BF;gBACA,eAAe,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAACG;YAClD;YAEJ,OAAOP,WAAW,QAAQ,CAAC,IAAI;QACnC;QAEA,MAAMQ,SAAS,MAAMC,oBAAoB;YACrC,SAAS,IAAI,CAAC,OAAO;YACrB,SAASV,MAAM,OAAO;YACtB,WAAWA,MAAM,SAAS;QAC9B;QACA,IAAI,AAAkB,YAAlB,OAAOS,QACP,OAAOR,WAAW,QAAQ,CAAC,IAAI,CAACQ;QAGpC,MAAME,gBAAgB;YAClB,OAAOF,OAAO,KAAK;YACnB,QAAQ,IAAI,CAAC,OAAO,CAAC,UAAU;YAC/B,eAAe,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAACD;QAClD;QAEA,MAAM,EAAEI,aAAa,EAAEC,eAAe,EAAE,GAAGC,iBAAiBd,MAAM,MAAM;QAExE,MAAMe,UAAUC,iBAAiBH;QAEjC,IAAK,IAAII,UAAU,GAAGA,UAAUL,eAAeK,UAC3C,MAAMhB,WAAW,IAAI,CAAC,OAAO,CAAwB;YACjD,YAAYiB;YACZ,OAAO;gBACH,aAAaL;gBACb,eAAe;YACnB;YACA,MAAM,CAAC,wBAAwB,EAAEI,UAAU,EAAE,IAAI,EAAEL,eAAe;QACtE;QAGJ,OAAOX,WAAW,QAAQ,CAAC,QAAQ,CAC/B;YACI,GAAGD,KAAK;YACRe;YACAH;YACAC;QACJ,GACA;YACIE;QACJ;IAER;IAEA,MAAc,sBAAsBjB,OAAgB,EAAEqB,EAAU,EAA+B;QAC3F,MAAM,EAAEhB,KAAK,EAAE,GAAG,MAAML,QAAQ,KAAK,CAAC,SAAS,CAAC;YAC5C,OAAO;gBACH,UAAUqB;gBACV,eAAe;oBAACC,eAAe,OAAO;oBAAEA,eAAe,OAAO;iBAAC;YACnE;YACA,OAAO;QACX;QACA,OAAOjB;IACX;IAEA,MAAc,gBAAgBL,OAAgB,EAAEqB,EAAU,EAAiB;QACvE,MAAMhB,QAAQ,MAAM,IAAI,CAAC,qBAAqB,CAACL,SAASqB;QACxD,KAAK,MAAME,QAAQlB,MACf,MAAML,QAAQ,KAAK,CAAC,KAAK,CAAC;YACtB,IAAIuB,KAAK,EAAE;YACX,SAAS;QACb;IAER;AACJ"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createGroupData } from "./group.js";
|
|
2
2
|
import { createCarsModel } from "./model.js";
|
|
3
3
|
import { createIndex } from "../../utils/index.js";
|
|
4
|
-
import {
|
|
4
|
+
import { CmsModelOpenSearchIndexProvider } from "@webiny/api-headless-cms-ddb-es/features/CmsModelOpenSearchIndex/CmsModelOpenSearchIndexProvider.js";
|
|
5
5
|
const createModelAndGroup = async (params)=>{
|
|
6
6
|
const { context, modelId, overwrite = false } = params;
|
|
7
7
|
let model = (await context.cms.listModels()).find((m)=>m.modelId === modelId);
|
|
@@ -19,7 +19,7 @@ const createModelAndGroup = async (params)=>{
|
|
|
19
19
|
await createIndex({
|
|
20
20
|
model,
|
|
21
21
|
client: context.opensearch,
|
|
22
|
-
|
|
22
|
+
indexProvider: context.container.resolve(CmsModelOpenSearchIndexProvider)
|
|
23
23
|
});
|
|
24
24
|
return {
|
|
25
25
|
group: group,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks/MockDataManager/createModelAndGroup.js","sources":["../../../src/tasks/MockDataManager/createModelAndGroup.ts"],"sourcesContent":["import type { CmsGroup, CmsModel } from \"@webiny/api-headless-cms/types/index.js\";\nimport type { Context } from \"~/types.js\";\nimport { createGroupData } from \"./group.js\";\nimport { createCarsModel } from \"./model.js\";\nimport { createIndex } from \"~/utils/index.js\";\nimport {
|
|
1
|
+
{"version":3,"file":"tasks/MockDataManager/createModelAndGroup.js","sources":["../../../src/tasks/MockDataManager/createModelAndGroup.ts"],"sourcesContent":["import type { CmsGroup, CmsModel } from \"@webiny/api-headless-cms/types/index.js\";\nimport type { Context } from \"~/types.js\";\nimport { createGroupData } from \"./group.js\";\nimport { createCarsModel } from \"./model.js\";\nimport { createIndex } from \"~/utils/index.js\";\nimport { CmsModelOpenSearchIndexProvider } from \"@webiny/api-headless-cms-ddb-es/features/CmsModelOpenSearchIndex/CmsModelOpenSearchIndexProvider.js\";\n\ninterface ICreateModelAndGroupParams {\n context: Context;\n modelId: string;\n overwrite?: boolean;\n}\nexport interface ICreateModelAndGroupResultSuccess {\n group: CmsGroup;\n model: CmsModel;\n}\nexport type ICreateModelAndGroupResult = string | ICreateModelAndGroupResultSuccess;\n\nexport const createModelAndGroup = async (\n params: ICreateModelAndGroupParams\n): Promise<ICreateModelAndGroupResult> => {\n const { context, modelId, overwrite = false } = params;\n /**\n * First we need to check if the model already exists in the database. If not, we need to create it.\n */\n let model = (await context.cms.listModels()).find(m => m.modelId === modelId);\n let group: CmsGroup | undefined;\n if (model && !overwrite) {\n return `Model \"${modelId}\" already exists.`;\n } else if (!model) {\n group = (await context.cms.listGroups()).find(group => group.slug === \"mocks\");\n if (!group) {\n const groupData = createGroupData();\n group = await context.cms.createGroup(groupData);\n }\n /**\n * Possibly we need to create the model.\n */\n const carsModel = createCarsModel(group);\n model = await context.cms.createModel(carsModel);\n }\n await createIndex({\n model,\n client: context.opensearch,\n indexProvider: context.container.resolve(CmsModelOpenSearchIndexProvider)\n });\n\n return {\n group: group as CmsGroup,\n model: model as CmsModel\n };\n};\n"],"names":["createModelAndGroup","params","context","modelId","overwrite","model","m","group","groupData","createGroupData","carsModel","createCarsModel","createIndex","CmsModelOpenSearchIndexProvider"],"mappings":";;;;AAkBO,MAAMA,sBAAsB,OAC/BC;IAEA,MAAM,EAAEC,OAAO,EAAEC,OAAO,EAAEC,YAAY,KAAK,EAAE,GAAGH;IAIhD,IAAII,QAAS,OAAMH,QAAQ,GAAG,CAAC,UAAU,EAAC,EAAG,IAAI,CAACI,CAAAA,IAAKA,EAAE,OAAO,KAAKH;IACrE,IAAII;IACJ,IAAIF,SAAS,CAACD,WACV,OAAO,CAAC,OAAO,EAAED,QAAQ,iBAAiB,CAAC;IACxC,IAAI,CAACE,OAAO;QACfE,QAAS,OAAML,QAAQ,GAAG,CAAC,UAAU,EAAC,EAAG,IAAI,CAACK,CAAAA,QAASA,AAAe,YAAfA,MAAM,IAAI;QACjE,IAAI,CAACA,OAAO;YACR,MAAMC,YAAYC;YAClBF,QAAQ,MAAML,QAAQ,GAAG,CAAC,WAAW,CAACM;QAC1C;QAIA,MAAME,YAAYC,gBAAgBJ;QAClCF,QAAQ,MAAMH,QAAQ,GAAG,CAAC,WAAW,CAACQ;IAC1C;IACA,MAAME,YAAY;QACdP;QACA,QAAQH,QAAQ,UAAU;QAC1B,eAAeA,QAAQ,SAAS,CAAC,OAAO,CAACW;IAC7C;IAEA,OAAO;QACH,OAAON;QACP,OAAOF;IACX;AACJ"}
|
|
@@ -10,6 +10,7 @@ declare class MockDataManagerTask implements TaskDefinition.Interface<IMockDataM
|
|
|
10
10
|
private readonly context;
|
|
11
11
|
constructor(context: CmsContext.Interface);
|
|
12
12
|
run(params: TaskDefinition.RunParams<IMockDataManagerInput, IMockDataManagerOutput>): Promise<TaskDefinition.Result<IMockDataManagerInput, import("@webiny/api-core/features/task/TaskDefinition/abstractions.js").ITaskOutput>>;
|
|
13
|
+
private findModel;
|
|
13
14
|
onError(): Promise<void>;
|
|
14
15
|
onAbort(): Promise<void>;
|
|
15
16
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { CARS_MODEL_ID } from "./MockDataManager/constants.js";
|
|
2
2
|
import { enableIndexing } from "../utils/index.js";
|
|
3
|
+
import { CmsModelOpenSearchIndexProvider } from "@webiny/api-headless-cms-ddb-es/features/CmsModelOpenSearchIndex/CmsModelOpenSearchIndexProvider.js";
|
|
3
4
|
import { TaskDefinition } from "@webiny/api-core/features/task/TaskDefinition/index.js";
|
|
4
5
|
import { CmsContext } from "@webiny/api-headless-cms/features/shared/abstractions.js";
|
|
5
6
|
const MOCK_DATA_MANAGER_TASK_ID = "mockDataManager";
|
|
@@ -26,22 +27,23 @@ class MockDataManagerTask {
|
|
|
26
27
|
return params.controller.response.error(ex);
|
|
27
28
|
}
|
|
28
29
|
}
|
|
30
|
+
async findModel() {
|
|
31
|
+
return (await this.context.cms.listModels()).find((m)=>m.modelId === CARS_MODEL_ID);
|
|
32
|
+
}
|
|
29
33
|
async onError() {
|
|
30
|
-
await
|
|
34
|
+
const model = await this.findModel();
|
|
35
|
+
if (model) await enableIndexing({
|
|
31
36
|
client: this.context.opensearch,
|
|
32
|
-
model
|
|
33
|
-
|
|
34
|
-
tenant: "root"
|
|
35
|
-
}
|
|
37
|
+
model,
|
|
38
|
+
indexProvider: this.context.container.resolve(CmsModelOpenSearchIndexProvider)
|
|
36
39
|
});
|
|
37
40
|
}
|
|
38
41
|
async onAbort() {
|
|
39
|
-
await
|
|
42
|
+
const model = await this.findModel();
|
|
43
|
+
if (model) await enableIndexing({
|
|
40
44
|
client: this.context.opensearch,
|
|
41
|
-
model
|
|
42
|
-
|
|
43
|
-
tenant: "root"
|
|
44
|
-
}
|
|
45
|
+
model,
|
|
46
|
+
indexProvider: this.context.container.resolve(CmsModelOpenSearchIndexProvider)
|
|
45
47
|
});
|
|
46
48
|
}
|
|
47
49
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks/MockDataManagerTask.js","sources":["../../src/tasks/MockDataManagerTask.ts"],"sourcesContent":["import type { Context } from \"~/types.js\";\nimport type {\n IMockDataManagerInput,\n IMockDataManagerOutput\n} from \"~/tasks/MockDataManager/types.js\";\nimport { CARS_MODEL_ID } from \"~/tasks/MockDataManager/constants.js\";\nimport { enableIndexing } from \"~/utils/index.js\";\nimport { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport { CmsContext } from \"@webiny/api-headless-cms/features/shared/abstractions.js\";\n\nexport const MOCK_DATA_MANAGER_TASK_ID = \"mockDataManager\";\n\nclass MockDataManagerTask implements TaskDefinition.Interface<\n IMockDataManagerInput,\n IMockDataManagerOutput\n> {\n id = MOCK_DATA_MANAGER_TASK_ID;\n title = \"Mock Data Manager\";\n maxIterations = 500;\n\n selfCleanup = \"always\" as const;\n\n private readonly context: Context;\n\n constructor(context: CmsContext.Interface) {\n this.context = context as Context;\n }\n\n async run(params: TaskDefinition.RunParams<IMockDataManagerInput, IMockDataManagerOutput>) {\n const { MockDataManager } = await import(\n /* webpackChunkName: \"MockDataManager\" */ \"./MockDataManager/MockDataManager.js\"\n );\n\n const carsMock = new MockDataManager<IMockDataManagerInput, IMockDataManagerOutput>(\n this.context as Context\n );\n\n try {\n return await carsMock.execute({\n ...params,\n input: {\n ...params.input,\n modelId: CARS_MODEL_ID\n }\n });\n } catch (ex) {\n return params.controller.response.error(ex);\n }\n }\n async onError() {\n await enableIndexing({\n
|
|
1
|
+
{"version":3,"file":"tasks/MockDataManagerTask.js","sources":["../../src/tasks/MockDataManagerTask.ts"],"sourcesContent":["import type { Context } from \"~/types.js\";\nimport type {\n IMockDataManagerInput,\n IMockDataManagerOutput\n} from \"~/tasks/MockDataManager/types.js\";\nimport { CARS_MODEL_ID } from \"~/tasks/MockDataManager/constants.js\";\nimport { enableIndexing } from \"~/utils/index.js\";\nimport { CmsModelOpenSearchIndexProvider } from \"@webiny/api-headless-cms-ddb-es/features/CmsModelOpenSearchIndex/CmsModelOpenSearchIndexProvider.js\";\nimport { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport { CmsContext } from \"@webiny/api-headless-cms/features/shared/abstractions.js\";\n\nexport const MOCK_DATA_MANAGER_TASK_ID = \"mockDataManager\";\n\nclass MockDataManagerTask implements TaskDefinition.Interface<\n IMockDataManagerInput,\n IMockDataManagerOutput\n> {\n id = MOCK_DATA_MANAGER_TASK_ID;\n title = \"Mock Data Manager\";\n maxIterations = 500;\n\n selfCleanup = \"always\" as const;\n\n private readonly context: Context;\n\n constructor(context: CmsContext.Interface) {\n this.context = context as Context;\n }\n\n async run(params: TaskDefinition.RunParams<IMockDataManagerInput, IMockDataManagerOutput>) {\n const { MockDataManager } = await import(\n /* webpackChunkName: \"MockDataManager\" */ \"./MockDataManager/MockDataManager.js\"\n );\n\n const carsMock = new MockDataManager<IMockDataManagerInput, IMockDataManagerOutput>(\n this.context as Context\n );\n\n try {\n return await carsMock.execute({\n ...params,\n input: {\n ...params.input,\n modelId: CARS_MODEL_ID\n }\n });\n } catch (ex) {\n return params.controller.response.error(ex);\n }\n }\n\n private async findModel() {\n return (await this.context.cms.listModels()).find(m => m.modelId === CARS_MODEL_ID);\n }\n\n async onError() {\n const model = await this.findModel();\n if (model) {\n await enableIndexing({\n client: this.context.opensearch,\n model,\n indexProvider: this.context.container.resolve(CmsModelOpenSearchIndexProvider)\n });\n }\n }\n\n async onAbort() {\n const model = await this.findModel();\n if (model) {\n await enableIndexing({\n client: this.context.opensearch,\n model,\n indexProvider: this.context.container.resolve(CmsModelOpenSearchIndexProvider)\n });\n }\n }\n}\n\nexport const MockDataManagerTaskDefinition = TaskDefinition.createImplementation({\n implementation: MockDataManagerTask,\n dependencies: [CmsContext]\n});\n"],"names":["MOCK_DATA_MANAGER_TASK_ID","MockDataManagerTask","context","params","MockDataManager","carsMock","CARS_MODEL_ID","ex","m","model","enableIndexing","CmsModelOpenSearchIndexProvider","MockDataManagerTaskDefinition","TaskDefinition","CmsContext"],"mappings":";;;;;AAWO,MAAMA,4BAA4B;AAEzC,MAAMC;IAYF,YAAYC,OAA6B,CAAE;aAR3C,EAAE,GAAGF;aACL,KAAK,GAAG;aACR,aAAa,GAAG;aAEhB,WAAW,GAAG;QAKV,IAAI,CAAC,OAAO,GAAGE;IACnB;IAEA,MAAM,IAAIC,MAA+E,EAAE;QACvF,MAAM,EAAEC,eAAe,EAAE,GAAG,MAAM,MAAM,CAAN;QAIlC,MAAMC,WAAW,IAAID,gBACjB,IAAI,CAAC,OAAO;QAGhB,IAAI;YACA,OAAO,MAAMC,SAAS,OAAO,CAAC;gBAC1B,GAAGF,MAAM;gBACT,OAAO;oBACH,GAAGA,OAAO,KAAK;oBACf,SAASG;gBACb;YACJ;QACJ,EAAE,OAAOC,IAAI;YACT,OAAOJ,OAAO,UAAU,CAAC,QAAQ,CAAC,KAAK,CAACI;QAC5C;IACJ;IAEA,MAAc,YAAY;QACtB,OAAQ,OAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAC,EAAG,IAAI,CAACC,CAAAA,IAAKA,EAAE,OAAO,KAAKF;IACzE;IAEA,MAAM,UAAU;QACZ,MAAMG,QAAQ,MAAM,IAAI,CAAC,SAAS;QAClC,IAAIA,OACA,MAAMC,eAAe;YACjB,QAAQ,IAAI,CAAC,OAAO,CAAC,UAAU;YAC/BD;YACA,eAAe,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAACE;QAClD;IAER;IAEA,MAAM,UAAU;QACZ,MAAMF,QAAQ,MAAM,IAAI,CAAC,SAAS;QAClC,IAAIA,OACA,MAAMC,eAAe;YACjB,QAAQ,IAAI,CAAC,OAAO,CAAC,UAAU;YAC/BD;YACA,eAAe,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAACE;QAClD;IAER;AACJ;AAEO,MAAMC,gCAAgCC,eAAe,oBAAoB,CAAC;IAC7E,gBAAgBZ;IAChB,cAAc;QAACa;KAAW;AAC9B"}
|
package/utils/createIndex.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { Client } from "@webiny/api-opensearch";
|
|
2
|
-
import type {
|
|
3
|
-
import type {
|
|
2
|
+
import type { StorageCmsModel } from "@webiny/api-headless-cms/types/index.js";
|
|
3
|
+
import type { CmsModelOpenSearchIndexProvider } from "@webiny/api-headless-cms-ddb-es/features/CmsModelOpenSearchIndex/CmsModelOpenSearchIndexProvider.js";
|
|
4
4
|
export interface ICreateIndexParams {
|
|
5
5
|
client: Client;
|
|
6
|
-
model:
|
|
7
|
-
|
|
6
|
+
model: StorageCmsModel;
|
|
7
|
+
indexProvider: CmsModelOpenSearchIndexProvider.Interface;
|
|
8
8
|
}
|
|
9
9
|
export declare const createIndex: (params: ICreateIndexParams) => Promise<void>;
|
package/utils/createIndex.js
CHANGED
|
@@ -1,23 +1,19 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { configurations } from "@webiny/api-headless-cms-ddb-es/configurations.js";
|
|
1
|
+
import { getOpenSearchIndexPrefix } from "@webiny/api-opensearch";
|
|
3
2
|
const createIndex = async (params)=>{
|
|
4
|
-
const { client, model,
|
|
5
|
-
const { index } =
|
|
3
|
+
const { client, model, indexProvider } = params;
|
|
4
|
+
const { index: rawIndex, settings } = await indexProvider.execute({
|
|
6
5
|
model
|
|
7
6
|
});
|
|
7
|
+
const prefix = getOpenSearchIndexPrefix();
|
|
8
|
+
const index = prefix ? prefix + rawIndex : rawIndex;
|
|
8
9
|
const result = await client.indices.exists({
|
|
9
10
|
index
|
|
10
11
|
});
|
|
11
12
|
if (result.body) return;
|
|
12
|
-
const usable = indexConfigs.filter((c)=>c.canUse({
|
|
13
|
-
model
|
|
14
|
-
}));
|
|
15
|
-
if (0 === usable.length) throw new WebinyError("Could not find a single usable CmsEntryOpenSearchIndex.", "OPENSEARCH_INDEX_TEMPLATE_ERROR");
|
|
16
|
-
const config = usable[usable.length - 1];
|
|
17
13
|
await client.indices.create({
|
|
18
14
|
index,
|
|
19
15
|
body: {
|
|
20
|
-
...
|
|
16
|
+
...settings
|
|
21
17
|
}
|
|
22
18
|
});
|
|
23
19
|
};
|
package/utils/createIndex.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils/createIndex.js","sources":["../../src/utils/createIndex.ts"],"sourcesContent":["import type { Client } from \"@webiny/api-opensearch\";\nimport
|
|
1
|
+
{"version":3,"file":"utils/createIndex.js","sources":["../../src/utils/createIndex.ts"],"sourcesContent":["import type { Client } from \"@webiny/api-opensearch\";\nimport type { StorageCmsModel } from \"@webiny/api-headless-cms/types/index.js\";\nimport type { CmsModelOpenSearchIndexProvider } from \"@webiny/api-headless-cms-ddb-es/features/CmsModelOpenSearchIndex/CmsModelOpenSearchIndexProvider.js\";\nimport { getOpenSearchIndexPrefix } from \"@webiny/api-opensearch\";\n\nexport interface ICreateIndexParams {\n client: Client;\n model: StorageCmsModel;\n indexProvider: CmsModelOpenSearchIndexProvider.Interface;\n}\n\nexport const createIndex = async (params: ICreateIndexParams): Promise<void> => {\n const { client, model, indexProvider } = params;\n\n const { index: rawIndex, settings } = await indexProvider.execute({ model });\n\n const prefix = getOpenSearchIndexPrefix();\n const index = prefix ? prefix + rawIndex : rawIndex;\n\n const result = await client.indices.exists({\n index\n });\n if (result.body) {\n return;\n }\n\n await client.indices.create({\n index,\n body: {\n ...settings\n }\n });\n};\n"],"names":["createIndex","params","client","model","indexProvider","rawIndex","settings","prefix","getOpenSearchIndexPrefix","index","result"],"mappings":";AAWO,MAAMA,cAAc,OAAOC;IAC9B,MAAM,EAAEC,MAAM,EAAEC,KAAK,EAAEC,aAAa,EAAE,GAAGH;IAEzC,MAAM,EAAE,OAAOI,QAAQ,EAAEC,QAAQ,EAAE,GAAG,MAAMF,cAAc,OAAO,CAAC;QAAED;IAAM;IAE1E,MAAMI,SAASC;IACf,MAAMC,QAAQF,SAASA,SAASF,WAAWA;IAE3C,MAAMK,SAAS,MAAMR,OAAO,OAAO,CAAC,MAAM,CAAC;QACvCO;IACJ;IACA,IAAIC,OAAO,IAAI,EACX;IAGJ,MAAMR,OAAO,OAAO,CAAC,MAAM,CAAC;QACxBO;QACA,MAAM;YACF,GAAGH,QAAQ;QACf;IACJ;AACJ"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import type { Client } from "@webiny/api-opensearch";
|
|
2
|
-
import type {
|
|
2
|
+
import type { StorageCmsModel } from "@webiny/api-headless-cms/types/index.js";
|
|
3
|
+
import type { CmsModelOpenSearchIndexProvider } from "@webiny/api-headless-cms-ddb-es/features/CmsModelOpenSearchIndex/CmsModelOpenSearchIndexProvider.js";
|
|
3
4
|
export interface IDisableIndexingParams {
|
|
4
5
|
client: Client;
|
|
5
|
-
model:
|
|
6
|
+
model: StorageCmsModel;
|
|
7
|
+
indexProvider: CmsModelOpenSearchIndexProvider.Interface;
|
|
6
8
|
}
|
|
7
9
|
export declare const disableIndexing: (params: IDisableIndexingParams) => Promise<void>;
|
package/utils/disableIndexing.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getOpenSearchIndexPrefix } from "@webiny/api-opensearch";
|
|
2
2
|
const disableIndexing = async (params)=>{
|
|
3
|
-
const { client, model } = params;
|
|
4
|
-
const { index } =
|
|
3
|
+
const { client, model, indexProvider } = params;
|
|
4
|
+
const { index: rawIndex } = await indexProvider.execute({
|
|
5
5
|
model
|
|
6
6
|
});
|
|
7
|
+
const prefix = getOpenSearchIndexPrefix();
|
|
8
|
+
const index = prefix ? prefix + rawIndex : rawIndex;
|
|
7
9
|
try {
|
|
8
10
|
await client.indices.putSettings({
|
|
9
11
|
index,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils/disableIndexing.js","sources":["../../src/utils/disableIndexing.ts"],"sourcesContent":["import type { Client } from \"@webiny/api-opensearch\";\nimport {
|
|
1
|
+
{"version":3,"file":"utils/disableIndexing.js","sources":["../../src/utils/disableIndexing.ts"],"sourcesContent":["import type { Client } from \"@webiny/api-opensearch\";\nimport type { StorageCmsModel } from \"@webiny/api-headless-cms/types/index.js\";\nimport type { CmsModelOpenSearchIndexProvider } from \"@webiny/api-headless-cms-ddb-es/features/CmsModelOpenSearchIndex/CmsModelOpenSearchIndexProvider.js\";\nimport { getOpenSearchIndexPrefix } from \"@webiny/api-opensearch\";\n\nexport interface IDisableIndexingParams {\n client: Client;\n model: StorageCmsModel;\n indexProvider: CmsModelOpenSearchIndexProvider.Interface;\n}\n\nexport const disableIndexing = async (params: IDisableIndexingParams) => {\n const { client, model, indexProvider } = params;\n\n const { index: rawIndex } = await indexProvider.execute({ model });\n const prefix = getOpenSearchIndexPrefix();\n const index = prefix ? prefix + rawIndex : rawIndex;\n\n try {\n await client.indices.putSettings({\n index,\n body: {\n index: {\n number_of_replicas: 0,\n refresh_interval: \"-1\"\n }\n }\n });\n } catch (ex) {\n console.error(ex);\n throw ex;\n }\n};\n"],"names":["disableIndexing","params","client","model","indexProvider","rawIndex","prefix","getOpenSearchIndexPrefix","index","ex","console"],"mappings":";AAWO,MAAMA,kBAAkB,OAAOC;IAClC,MAAM,EAAEC,MAAM,EAAEC,KAAK,EAAEC,aAAa,EAAE,GAAGH;IAEzC,MAAM,EAAE,OAAOI,QAAQ,EAAE,GAAG,MAAMD,cAAc,OAAO,CAAC;QAAED;IAAM;IAChE,MAAMG,SAASC;IACf,MAAMC,QAAQF,SAASA,SAASD,WAAWA;IAE3C,IAAI;QACA,MAAMH,OAAO,OAAO,CAAC,WAAW,CAAC;YAC7BM;YACA,MAAM;gBACF,OAAO;oBACH,oBAAoB;oBACpB,kBAAkB;gBACtB;YACJ;QACJ;IACJ,EAAE,OAAOC,IAAI;QACTC,QAAQ,KAAK,CAACD;QACd,MAAMA;IACV;AACJ"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import type { Client } from "@webiny/api-opensearch";
|
|
2
|
-
import type {
|
|
2
|
+
import type { StorageCmsModel } from "@webiny/api-headless-cms/types/index.js";
|
|
3
|
+
import type { CmsModelOpenSearchIndexProvider } from "@webiny/api-headless-cms-ddb-es/features/CmsModelOpenSearchIndex/CmsModelOpenSearchIndexProvider.js";
|
|
3
4
|
interface IEnableIndexingParams {
|
|
4
5
|
client: Client;
|
|
5
|
-
model:
|
|
6
|
+
model: StorageCmsModel;
|
|
7
|
+
indexProvider: CmsModelOpenSearchIndexProvider.Interface;
|
|
6
8
|
}
|
|
7
9
|
export declare const enableIndexing: (params: IEnableIndexingParams) => Promise<void>;
|
|
8
10
|
export {};
|
package/utils/enableIndexing.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getOpenSearchIndexPrefix } from "@webiny/api-opensearch";
|
|
2
2
|
const enableIndexing = async (params)=>{
|
|
3
|
-
const { client, model } = params;
|
|
4
|
-
const { index } =
|
|
3
|
+
const { client, model, indexProvider } = params;
|
|
4
|
+
const { index: rawIndex } = await indexProvider.execute({
|
|
5
5
|
model
|
|
6
6
|
});
|
|
7
|
+
const prefix = getOpenSearchIndexPrefix();
|
|
8
|
+
const index = prefix ? prefix + rawIndex : rawIndex;
|
|
7
9
|
try {
|
|
8
10
|
await client.indices.putSettings({
|
|
9
11
|
index,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils/enableIndexing.js","sources":["../../src/utils/enableIndexing.ts"],"sourcesContent":["import type { Client } from \"@webiny/api-opensearch\";\nimport type {
|
|
1
|
+
{"version":3,"file":"utils/enableIndexing.js","sources":["../../src/utils/enableIndexing.ts"],"sourcesContent":["import type { Client } from \"@webiny/api-opensearch\";\nimport type { StorageCmsModel } from \"@webiny/api-headless-cms/types/index.js\";\nimport type { CmsModelOpenSearchIndexProvider } from \"@webiny/api-headless-cms-ddb-es/features/CmsModelOpenSearchIndex/CmsModelOpenSearchIndexProvider.js\";\nimport { getOpenSearchIndexPrefix } from \"@webiny/api-opensearch\";\n\ninterface IEnableIndexingParams {\n client: Client;\n model: StorageCmsModel;\n indexProvider: CmsModelOpenSearchIndexProvider.Interface;\n}\n\nexport const enableIndexing = async (params: IEnableIndexingParams) => {\n const { client, model, indexProvider } = params;\n const { index: rawIndex } = await indexProvider.execute({ model });\n const prefix = getOpenSearchIndexPrefix();\n const index = prefix ? prefix + rawIndex : rawIndex;\n try {\n await client.indices.putSettings({\n index,\n body: {\n index: {\n number_of_replicas: 1,\n refresh_interval: \"1s\"\n }\n }\n });\n } catch (ex) {\n console.error(ex);\n throw ex;\n }\n};\n"],"names":["enableIndexing","params","client","model","indexProvider","rawIndex","prefix","getOpenSearchIndexPrefix","index","ex","console"],"mappings":";AAWO,MAAMA,iBAAiB,OAAOC;IACjC,MAAM,EAAEC,MAAM,EAAEC,KAAK,EAAEC,aAAa,EAAE,GAAGH;IACzC,MAAM,EAAE,OAAOI,QAAQ,EAAE,GAAG,MAAMD,cAAc,OAAO,CAAC;QAAED;IAAM;IAChE,MAAMG,SAASC;IACf,MAAMC,QAAQF,SAASA,SAASD,WAAWA;IAC3C,IAAI;QACA,MAAMH,OAAO,OAAO,CAAC,WAAW,CAAC;YAC7BM;YACA,MAAM;gBACF,OAAO;oBACH,oBAAoB;oBACpB,kBAAkB;gBACtB;YACJ;QACJ;IACJ,EAAE,OAAOC,IAAI;QACTC,QAAQ,KAAK,CAACD;QACd,MAAMA;IACV;AACJ"}
|