@webiny/api-elasticsearch-tasks 0.0.0-unstable.eb196ccd2f → 0.0.0-unstable.f6dc066313
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/README.md +10 -9
- package/abstractions/DbRegistry.d.ts +11 -0
- package/abstractions/DbRegistry.js +4 -0
- package/abstractions/DbRegistry.js.map +1 -0
- package/abstractions/OpensearchTenantIndexFactory.d.ts +14 -0
- package/abstractions/OpensearchTenantIndexFactory.js +4 -0
- package/abstractions/OpensearchTenantIndexFactory.js.map +1 -0
- package/abstractions/SynchronizationContext.d.ts +6 -0
- package/abstractions/SynchronizationContext.js +4 -0
- package/abstractions/SynchronizationContext.js.map +1 -0
- package/errors/IndexSettingsGetError.d.ts +1 -1
- package/errors/IndexSettingsGetError.js +2 -10
- package/errors/IndexSettingsGetError.js.map +1 -1
- package/errors/IndexSettingsSetError.d.ts +1 -1
- package/errors/IndexSettingsSetError.js +2 -10
- package/errors/IndexSettingsSetError.js.map +1 -1
- package/errors/IndexingDisableError.js +1 -8
- package/errors/IndexingDisableError.js.map +1 -1
- package/errors/IndexingEnableError.js +1 -8
- package/errors/IndexingEnableError.js.map +1 -1
- package/errors/index.d.ts +4 -4
- package/errors/index.js +4 -49
- package/errors/index.js.map +1 -1
- package/helpers/getClients.d.ts +5 -0
- package/helpers/getClients.js +14 -0
- package/helpers/getClients.js.map +1 -0
- package/helpers/scan.d.ts +2 -2
- package/helpers/scan.js +3 -10
- package/helpers/scan.js.map +1 -1
- package/index.d.ts +5 -5
- package/index.js +14 -25
- package/index.js.map +1 -1
- package/package.json +26 -30
- package/settings/DisableIndexing.d.ts +2 -2
- package/settings/DisableIndexing.js +3 -10
- package/settings/DisableIndexing.js.map +1 -1
- package/settings/EnableIndexing.d.ts +2 -2
- package/settings/EnableIndexing.js +3 -10
- package/settings/EnableIndexing.js.map +1 -1
- package/settings/IndexManager.d.ts +2 -2
- package/settings/IndexManager.js +10 -17
- package/settings/IndexManager.js.map +1 -1
- package/settings/IndexSettingsManager.d.ts +1 -1
- package/settings/IndexSettingsManager.js +4 -11
- package/settings/IndexSettingsManager.js.map +1 -1
- package/settings/index.d.ts +1 -1
- package/settings/index.js +1 -16
- package/settings/index.js.map +1 -1
- package/settings/types.d.ts +1 -1
- package/settings/types.js +1 -5
- package/settings/types.js.map +1 -1
- package/tasks/Manager.d.ts +15 -25
- package/tasks/Manager.js +10 -31
- package/tasks/Manager.js.map +1 -1
- package/tasks/createIndexes/CreateIndexesTask.d.ts +23 -0
- package/tasks/createIndexes/CreateIndexesTask.js +53 -0
- package/tasks/createIndexes/CreateIndexesTask.js.map +1 -0
- package/tasks/createIndexes/CreateIndexesTaskRunner.d.ts +14 -8
- package/tasks/createIndexes/CreateIndexesTaskRunner.js +22 -29
- package/tasks/createIndexes/CreateIndexesTaskRunner.js.map +1 -1
- package/tasks/createIndexes/OnBeforeTrigger.d.ts +7 -9
- package/tasks/createIndexes/OnBeforeTrigger.js +11 -28
- package/tasks/createIndexes/OnBeforeTrigger.js.map +1 -1
- package/tasks/createIndexes/createIndex.d.ts +1 -1
- package/tasks/createIndexes/createIndex.js +2 -9
- package/tasks/createIndexes/createIndex.js.map +1 -1
- package/tasks/createIndexes/index.d.ts +2 -3
- package/tasks/createIndexes/index.js +17 -63
- package/tasks/createIndexes/index.js.map +1 -1
- package/tasks/createIndexes/listIndexes.d.ts +4 -12
- package/tasks/createIndexes/listIndexes.js +10 -43
- package/tasks/createIndexes/listIndexes.js.map +1 -1
- package/tasks/createIndexes/types.js +1 -5
- package/tasks/dataSynchronization/DataSynchronizationTask.d.ts +34 -0
- package/tasks/dataSynchronization/DataSynchronizationTask.js +69 -0
- package/tasks/dataSynchronization/DataSynchronizationTask.js.map +1 -0
- package/tasks/dataSynchronization/DataSynchronizationTaskRunner.d.ts +6 -3
- package/tasks/dataSynchronization/DataSynchronizationTaskRunner.js +7 -17
- package/tasks/dataSynchronization/DataSynchronizationTaskRunner.js.map +1 -1
- package/tasks/dataSynchronization/createFactories.d.ts +1 -1
- package/tasks/dataSynchronization/createFactories.js +3 -10
- package/tasks/dataSynchronization/createFactories.js.map +1 -1
- package/tasks/dataSynchronization/elasticsearch/ElasticsearchFetcher.d.ts +1 -1
- package/tasks/dataSynchronization/elasticsearch/ElasticsearchFetcher.js +5 -12
- package/tasks/dataSynchronization/elasticsearch/ElasticsearchFetcher.js.map +1 -1
- package/tasks/dataSynchronization/elasticsearch/ElasticsearchSynchronize.d.ts +8 -10
- package/tasks/dataSynchronization/elasticsearch/ElasticsearchSynchronize.js +18 -24
- package/tasks/dataSynchronization/elasticsearch/ElasticsearchSynchronize.js.map +1 -1
- package/tasks/dataSynchronization/elasticsearch/ElasticsearchToDynamoDbSynchronization.d.ts +1 -1
- package/tasks/dataSynchronization/elasticsearch/ElasticsearchToDynamoDbSynchronization.js +6 -13
- package/tasks/dataSynchronization/elasticsearch/ElasticsearchToDynamoDbSynchronization.js.map +1 -1
- package/tasks/dataSynchronization/elasticsearch/abstractions/ElasticsearchFetcher.d.ts +1 -1
- package/tasks/dataSynchronization/elasticsearch/abstractions/ElasticsearchFetcher.js +1 -5
- package/tasks/dataSynchronization/elasticsearch/abstractions/ElasticsearchFetcher.js.map +1 -1
- package/tasks/dataSynchronization/elasticsearch/abstractions/ElasticsearchSynchronize.js +1 -5
- package/tasks/dataSynchronization/elasticsearch/shouldIgnoreEsResponseError.js +1 -8
- package/tasks/dataSynchronization/elasticsearch/shouldIgnoreEsResponseError.js.map +1 -1
- package/tasks/dataSynchronization/entities/getElasticsearchEntity.d.ts +7 -710
- package/tasks/dataSynchronization/entities/getElasticsearchEntity.js +6 -28
- package/tasks/dataSynchronization/entities/getElasticsearchEntity.js.map +1 -1
- package/tasks/dataSynchronization/entities/getElasticsearchEntityType.d.ts +1 -4
- package/tasks/dataSynchronization/entities/getElasticsearchEntityType.js +2 -19
- package/tasks/dataSynchronization/entities/getElasticsearchEntityType.js.map +1 -1
- package/tasks/dataSynchronization/entities/getTable.d.ts +3 -3
- package/tasks/dataSynchronization/entities/getTable.js +3 -10
- package/tasks/dataSynchronization/entities/getTable.js.map +1 -1
- package/tasks/dataSynchronization/entities/index.d.ts +3 -3
- package/tasks/dataSynchronization/entities/index.js +3 -38
- package/tasks/dataSynchronization/entities/index.js.map +1 -1
- package/tasks/dataSynchronization/index.d.ts +3 -4
- package/tasks/dataSynchronization/index.js +22 -74
- package/tasks/dataSynchronization/index.js.map +1 -1
- package/tasks/dataSynchronization/types.d.ts +9 -8
- package/tasks/dataSynchronization/types.js +1 -5
- package/tasks/dataSynchronization/types.js.map +1 -1
- package/tasks/enableIndexing/EnableIndexingTaskRunner.d.ts +5 -6
- package/tasks/enableIndexing/EnableIndexingTaskRunner.js +5 -13
- package/tasks/enableIndexing/EnableIndexingTaskRunner.js.map +1 -1
- package/tasks/enableIndexing/index.d.ts +2 -3
- package/tasks/enableIndexing/index.js +40 -46
- package/tasks/enableIndexing/index.js.map +1 -1
- package/tasks/enableIndexing/types.js +1 -5
- package/tasks/index.d.ts +4 -4
- package/tasks/index.js +4 -49
- package/tasks/index.js.map +1 -1
- package/tasks/reindexing/ReindexingTaskRunner.d.ts +4 -5
- package/tasks/reindexing/ReindexingTaskRunner.js +18 -26
- package/tasks/reindexing/ReindexingTaskRunner.js.map +1 -1
- package/tasks/reindexing/index.d.ts +1 -1
- package/tasks/reindexing/index.js +1 -16
- package/tasks/reindexing/index.js.map +1 -1
- package/tasks/reindexing/reindexingTaskDefinition.d.ts +2 -2
- package/tasks/reindexing/reindexingTaskDefinition.js +43 -44
- package/tasks/reindexing/reindexingTaskDefinition.js.map +1 -1
- package/types.d.ts +18 -20
- package/types.js +1 -5
- package/types.js.map +1 -1
- package/definitions/entry.d.ts +0 -11
- package/definitions/entry.js +0 -43
- package/definitions/entry.js.map +0 -1
- package/definitions/index.d.ts +0 -2
- package/definitions/index.js +0 -29
- package/definitions/index.js.map +0 -1
- package/definitions/table.d.ts +0 -7
- package/definitions/table.js +0 -23
- package/definitions/table.js.map +0 -1
- package/tasks/createIndexes/CreateElasticsearchIndexTaskPlugin.d.ts +0 -23
- package/tasks/createIndexes/CreateElasticsearchIndexTaskPlugin.js +0 -25
- package/tasks/createIndexes/CreateElasticsearchIndexTaskPlugin.js.map +0 -1
- package/tasks/createIndexes/listCreateElasticsearchIndexTaskPlugin.d.ts +0 -4
- package/tasks/createIndexes/listCreateElasticsearchIndexTaskPlugin.js +0 -13
- package/tasks/createIndexes/listCreateElasticsearchIndexTaskPlugin.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["listIndexes","createIndexFactory","CreateIndexesTaskRunner","constructor","tenantContext","listTenantsUseCase","indexFactories","manager","indexManager","taskController","controller","execute","matching","done","length","response","tenantsResult","tenants","value","indexes","isIndexAllowed","index","includes","createIndex","settings","runtime","isAborted","aborted","isCloseToTimeout","continue","exists","indexExists","push","create","logger","info","message","data","ex","error"],"sources":["CreateIndexesTaskRunner.ts"],"sourcesContent":["import type { Manager } from \"~/tasks/Manager.js\";\nimport type { IndexManager } from \"~/settings/index.js\";\nimport type { IElasticsearchCreateIndexesTaskInput } from \"./types.js\";\nimport { listIndexes } from \"./listIndexes.js\";\nimport { createIndexFactory } from \"./createIndex.js\";\nimport { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport { TenantContext } from \"@webiny/api-core/features/tenancy/TenantContext/index.js\";\nimport { OpensearchTenantIndexFactory } from \"~/abstractions/OpensearchTenantIndexFactory.js\";\nimport { ListTenantsUseCase } from \"@webiny/api-core/features/tenancy/ListTenants/index.js\";\nimport { TaskController } from \"@webiny/api-core/features/task/TaskController/index.js\";\n\nexport class CreateIndexesTaskRunner {\n private taskController: TaskController.Interface;\n\n public constructor(\n private tenantContext: TenantContext.Interface,\n private listTenantsUseCase: ListTenantsUseCase.Interface,\n private indexFactories: OpensearchTenantIndexFactory.Interface[],\n manager: Manager<IElasticsearchCreateIndexesTaskInput>,\n private indexManager: IndexManager\n ) {\n this.taskController = manager.controller;\n }\n\n public async execute(\n matching: string | undefined,\n done: string[]\n ): Promise<TaskDefinition.Result> {\n if (this.indexFactories.length === 0) {\n return this.taskController.response.done(\"No index plugins found.\");\n }\n\n const tenantsResult = await this.listTenantsUseCase.execute();\n const tenants = tenantsResult.value;\n\n const indexes = await listIndexes(this.tenantContext, tenants, this.indexFactories);\n\n if (indexes.length === 0) {\n return this.taskController.response.done(\"No indexes found.\");\n }\n\n const isIndexAllowed = (index: string): boolean => {\n if (typeof matching !== \"string\" || !matching) {\n return true;\n }\n return index.includes(matching);\n };\n\n const createIndex = createIndexFactory(this.indexManager);\n\n for (const { index, settings } of indexes) {\n if (this.taskController.runtime.isAborted()) {\n return this.taskController.response.aborted();\n } else if (this.taskController.runtime.isCloseToTimeout()) {\n return this.taskController.response.continue({\n done\n });\n }\n try {\n if (done.includes(index)) {\n continue;\n } else if (isIndexAllowed(index) === false) {\n continue;\n }\n const exists = await this.indexManager.indexExists(index);\n if (exists) {\n continue;\n }\n done.push(index);\n await createIndex.create(index, settings);\n await this.taskController.logger.info({\n message: `Index \"${index}\" created.`,\n data: { index }\n });\n } catch (ex) {\n await this.taskController.logger.error({\n message: `Failed to create index \"${index}\".`,\n error: ex\n });\n }\n }\n\n return this.taskController.response.done(\"Indexes created.\", {\n done\n });\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
indexManager: IndexManager;
|
|
5
|
-
context: Context;
|
|
6
|
-
}
|
|
1
|
+
import type { IndexManager } from "../../settings/index.js";
|
|
2
|
+
import { TenantContext } from "@webiny/api-core/features/tenancy/TenantContext/index.js";
|
|
3
|
+
import { OpensearchTenantIndexFactory } from "../../abstractions/OpensearchTenantIndexFactory.js";
|
|
7
4
|
export declare class OnBeforeTrigger {
|
|
8
|
-
private
|
|
9
|
-
private
|
|
10
|
-
|
|
5
|
+
private indexManager;
|
|
6
|
+
private tenantContext;
|
|
7
|
+
private indexFactories;
|
|
8
|
+
constructor(indexManager: IndexManager, tenantContext: TenantContext.Interface, indexFactories: OpensearchTenantIndexFactory.Interface[]);
|
|
11
9
|
run(targets: string[] | undefined): Promise<void>;
|
|
12
10
|
}
|
|
@@ -1,34 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
var _createIndex = require("./createIndex");
|
|
9
|
-
var _listCreateElasticsearchIndexTaskPlugin = require("./listCreateElasticsearchIndexTaskPlugin");
|
|
10
|
-
class OnBeforeTrigger {
|
|
11
|
-
constructor(params) {
|
|
12
|
-
this.context = params.context;
|
|
13
|
-
this.indexManager = params.indexManager;
|
|
1
|
+
import { listIndexes } from "./listIndexes.js";
|
|
2
|
+
import { createIndexFactory } from "./createIndex.js";
|
|
3
|
+
export class OnBeforeTrigger {
|
|
4
|
+
constructor(indexManager, tenantContext, indexFactories) {
|
|
5
|
+
this.indexManager = indexManager;
|
|
6
|
+
this.tenantContext = tenantContext;
|
|
7
|
+
this.indexFactories = indexFactories;
|
|
14
8
|
}
|
|
15
9
|
async run(targets) {
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
if (!tenant?.id) {
|
|
10
|
+
const tenant = this.tenantContext.getTenant();
|
|
11
|
+
if (!tenant) {
|
|
19
12
|
throw new Error("Something went wrong, tenant not found when triggering a task.");
|
|
20
13
|
}
|
|
21
|
-
const locale = this.context.i18n.getContentLocale();
|
|
22
|
-
if (!locale) {
|
|
23
|
-
throw new Error("Something went wrong, locale not found when triggering a task.");
|
|
24
|
-
}
|
|
25
14
|
try {
|
|
26
|
-
const allIndexes = await (
|
|
27
|
-
context: this.context,
|
|
28
|
-
plugins,
|
|
29
|
-
tenants: [tenant],
|
|
30
|
-
locales: [locale]
|
|
31
|
-
});
|
|
15
|
+
const allIndexes = await listIndexes(this.tenantContext, [tenant], this.indexFactories);
|
|
32
16
|
const indexes = allIndexes.filter(index => {
|
|
33
17
|
if (!targets?.length) {
|
|
34
18
|
return true;
|
|
@@ -46,7 +30,7 @@ class OnBeforeTrigger {
|
|
|
46
30
|
});
|
|
47
31
|
return;
|
|
48
32
|
}
|
|
49
|
-
const createIndex =
|
|
33
|
+
const createIndex = createIndexFactory(this.indexManager);
|
|
50
34
|
for (const {
|
|
51
35
|
index,
|
|
52
36
|
settings
|
|
@@ -63,6 +47,5 @@ class OnBeforeTrigger {
|
|
|
63
47
|
}
|
|
64
48
|
}
|
|
65
49
|
}
|
|
66
|
-
exports.OnBeforeTrigger = OnBeforeTrigger;
|
|
67
50
|
|
|
68
51
|
//# sourceMappingURL=OnBeforeTrigger.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["listIndexes","createIndexFactory","OnBeforeTrigger","constructor","indexManager","tenantContext","indexFactories","run","targets","tenant","getTenant","Error","allIndexes","indexes","filter","index","length","t","includes","console","warn","createIndex","settings","log","createIfNotExists","ex","error"],"sources":["OnBeforeTrigger.ts"],"sourcesContent":["import type { IndexManager } from \"~/settings/index.js\";\nimport { listIndexes } from \"./listIndexes.js\";\nimport { createIndexFactory } from \"~/tasks/createIndexes/createIndex.js\";\nimport { TenantContext } from \"@webiny/api-core/features/tenancy/TenantContext/index.js\";\nimport { OpensearchTenantIndexFactory } from \"~/abstractions/OpensearchTenantIndexFactory.js\";\n\nexport class OnBeforeTrigger {\n public constructor(\n private indexManager: IndexManager,\n private tenantContext: TenantContext.Interface,\n private indexFactories: OpensearchTenantIndexFactory.Interface[]\n ) {}\n\n public async run(targets: string[] | undefined): Promise<void> {\n const tenant = this.tenantContext.getTenant();\n if (!tenant) {\n throw new Error(\"Something went wrong, tenant not found when triggering a task.\");\n }\n\n try {\n const allIndexes = await listIndexes(this.tenantContext, [tenant], this.indexFactories);\n\n const indexes = allIndexes.filter(index => {\n if (!targets?.length) {\n return true;\n }\n for (const t of targets) {\n if (index.index.includes(t)) {\n return true;\n }\n }\n return false;\n });\n if (indexes.length === 0) {\n console.warn(\n \"There are no indexes to create before triggering the Create indexes task.\",\n {\n targets\n }\n );\n return;\n }\n\n const createIndex = createIndexFactory(this.indexManager);\n\n for (const { index, settings } of indexes) {\n try {\n console.log(\"Creating index\", index);\n await createIndex.createIfNotExists(index, settings);\n } catch (ex) {\n console.error(`Failed to create index \"${index}\".`, ex);\n }\n }\n } catch (ex) {\n console.error(ex);\n }\n }\n}\n"],"mappings":"AACA,SAASA,WAAW;AACpB,SAASC,kBAAkB;AAI3B,OAAO,MAAMC,eAAe,CAAC;EAClBC,WAAWA,CACNC,YAA0B,EAC1BC,aAAsC,EACtCC,cAAwD,EAClE;IAAA,KAHUF,YAA0B,GAA1BA,YAA0B;IAAA,KAC1BC,aAAsC,GAAtCA,aAAsC;IAAA,KACtCC,cAAwD,GAAxDA,cAAwD;EACjE;EAEH,MAAaC,GAAGA,CAACC,OAA6B,EAAiB;IAC3D,MAAMC,MAAM,GAAG,IAAI,CAACJ,aAAa,CAACK,SAAS,CAAC,CAAC;IAC7C,IAAI,CAACD,MAAM,EAAE;MACT,MAAM,IAAIE,KAAK,CAAC,gEAAgE,CAAC;IACrF;IAEA,IAAI;MACA,MAAMC,UAAU,GAAG,MAAMZ,WAAW,CAAC,IAAI,CAACK,aAAa,EAAE,CAACI,MAAM,CAAC,EAAE,IAAI,CAACH,cAAc,CAAC;MAEvF,MAAMO,OAAO,GAAGD,UAAU,CAACE,MAAM,CAACC,KAAK,IAAI;QACvC,IAAI,CAACP,OAAO,EAAEQ,MAAM,EAAE;UAClB,OAAO,IAAI;QACf;QACA,KAAK,MAAMC,CAAC,IAAIT,OAAO,EAAE;UACrB,IAAIO,KAAK,CAACA,KAAK,CAACG,QAAQ,CAACD,CAAC,CAAC,EAAE;YACzB,OAAO,IAAI;UACf;QACJ;QACA,OAAO,KAAK;MAChB,CAAC,CAAC;MACF,IAAIJ,OAAO,CAACG,MAAM,KAAK,CAAC,EAAE;QACtBG,OAAO,CAACC,IAAI,CACR,2EAA2E,EAC3E;UACIZ;QACJ,CACJ,CAAC;QACD;MACJ;MAEA,MAAMa,WAAW,GAAGpB,kBAAkB,CAAC,IAAI,CAACG,YAAY,CAAC;MAEzD,KAAK,MAAM;QAAEW,KAAK;QAAEO;MAAS,CAAC,IAAIT,OAAO,EAAE;QACvC,IAAI;UACAM,OAAO,CAACI,GAAG,CAAC,gBAAgB,EAAER,KAAK,CAAC;UACpC,MAAMM,WAAW,CAACG,iBAAiB,CAACT,KAAK,EAAEO,QAAQ,CAAC;QACxD,CAAC,CAAC,OAAOG,EAAE,EAAE;UACTN,OAAO,CAACO,KAAK,CAAC,2BAA2BX,KAAK,IAAI,EAAEU,EAAE,CAAC;QAC3D;MACJ;IACJ,CAAC,CAAC,OAAOA,EAAE,EAAE;MACTN,OAAO,CAACO,KAAK,CAACD,EAAE,CAAC;IACrB;EACJ;AACJ","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { IndexManager } from "../../settings";
|
|
1
|
+
import type { IndexManager } from "../../settings/index.js";
|
|
2
2
|
export declare const createIndexFactory: (manager: IndexManager) => {
|
|
3
3
|
create: (index: string, settings?: Record<string, any>) => Promise<void>;
|
|
4
4
|
createIfNotExists: (index: string, settings?: Record<string, any>) => Promise<void>;
|
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.createIndexFactory = void 0;
|
|
7
|
-
const createIndexFactory = manager => {
|
|
1
|
+
export const createIndexFactory = manager => {
|
|
8
2
|
return {
|
|
9
3
|
create: async (index, settings) => {
|
|
10
4
|
return manager.createIndex(index, settings);
|
|
@@ -15,13 +9,12 @@ const createIndexFactory = manager => {
|
|
|
15
9
|
if (exists) {
|
|
16
10
|
return;
|
|
17
11
|
}
|
|
18
|
-
} catch
|
|
12
|
+
} catch {
|
|
19
13
|
return;
|
|
20
14
|
}
|
|
21
15
|
return await manager.createIndex(index, settings);
|
|
22
16
|
}
|
|
23
17
|
};
|
|
24
18
|
};
|
|
25
|
-
exports.createIndexFactory = createIndexFactory;
|
|
26
19
|
|
|
27
20
|
//# sourceMappingURL=createIndex.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createIndexFactory","manager","create","index","settings","createIndex","createIfNotExists","exists","indexExists"
|
|
1
|
+
{"version":3,"names":["createIndexFactory","manager","create","index","settings","createIndex","createIfNotExists","exists","indexExists"],"sources":["createIndex.ts"],"sourcesContent":["import type { IndexManager } from \"~/settings/index.js\";\n\nexport const createIndexFactory = (manager: IndexManager) => {\n return {\n create: async (index: string, settings?: Record<string, any>): Promise<void> => {\n return manager.createIndex(index, settings);\n },\n createIfNotExists: async (index: string, settings?: Record<string, any>): Promise<void> => {\n try {\n const exists = await manager.indexExists(index);\n if (exists) {\n return;\n }\n } catch {\n return;\n }\n\n return await manager.createIndex(index, settings);\n }\n };\n};\n"],"mappings":"AAEA,OAAO,MAAMA,kBAAkB,GAAIC,OAAqB,IAAK;EACzD,OAAO;IACHC,MAAM,EAAE,MAAAA,CAAOC,KAAa,EAAEC,QAA8B,KAAoB;MAC5E,OAAOH,OAAO,CAACI,WAAW,CAACF,KAAK,EAAEC,QAAQ,CAAC;IAC/C,CAAC;IACDE,iBAAiB,EAAE,MAAAA,CAAOH,KAAa,EAAEC,QAA8B,KAAoB;MACvF,IAAI;QACA,MAAMG,MAAM,GAAG,MAAMN,OAAO,CAACO,WAAW,CAACL,KAAK,CAAC;QAC/C,IAAII,MAAM,EAAE;UACR;QACJ;MACJ,CAAC,CAAC,MAAM;QACJ;MACJ;MAEA,OAAO,MAAMN,OAAO,CAACI,WAAW,CAACF,KAAK,EAAEC,QAAQ,CAAC;IACrD;EACJ,CAAC;AACL,CAAC","ignoreList":[]}
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
import type { Context, IElasticsearchTaskConfig } from "../../types";
|
|
2
|
-
|
|
3
|
-
export declare const createIndexesTaskDefinition: (params?: IElasticsearchTaskConfig) => import("@webiny/tasks").TaskDefinitionPlugin<Context, IElasticsearchCreateIndexesTaskInput, import("@webiny/tasks").ITaskResponseDoneResultOutput>;
|
|
1
|
+
import type { Context, IElasticsearchTaskConfig } from "../../types.js";
|
|
2
|
+
export declare const createIndexesTaskDefinition: (params?: Partial<IElasticsearchTaskConfig>) => import("@webiny/api").ContextPlugin<Context>;
|
|
@@ -1,68 +1,22 @@
|
|
|
1
|
-
|
|
1
|
+
import { TaskDefinition } from "@webiny/api-core/features/task/TaskDefinition/index.js";
|
|
2
|
+
import { createContextPlugin } from "@webiny/api";
|
|
3
|
+
import { getClients } from "../../helpers/getClients.js";
|
|
4
|
+
import { CreateIndexesTaskDefinition } from "./CreateIndexesTask.js";
|
|
5
|
+
import { TenantContext } from "@webiny/api-core/features/tenancy/TenantContext/index.js";
|
|
6
|
+
import { ListTenantsUseCase } from "@webiny/api-core/features/tenancy/ListTenants/index.js";
|
|
7
|
+
import { OpensearchTenantIndexFactory } from "../../abstractions/OpensearchTenantIndexFactory.js";
|
|
8
|
+
export const createIndexesTaskDefinition = params => {
|
|
9
|
+
return createContextPlugin(async context => {
|
|
10
|
+
const clients = getClients(context, params);
|
|
2
11
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
return (0, _tasks.createTaskDefinition)({
|
|
11
|
-
id: "elasticsearchCreateIndexes",
|
|
12
|
-
title: "Create Missing Elasticsearch Indexes",
|
|
13
|
-
/**
|
|
14
|
-
* Maximum number of iterations before the task goes into the error state.
|
|
15
|
-
* No point in having more than 2 runs, as the create index operations should not even take 1 full run, no matter how much indeexs is there to create.
|
|
16
|
-
*/
|
|
17
|
-
maxIterations: 2,
|
|
18
|
-
run: async ({
|
|
19
|
-
response,
|
|
20
|
-
context,
|
|
21
|
-
isCloseToTimeout,
|
|
22
|
-
isAborted,
|
|
23
|
-
store,
|
|
24
|
-
input,
|
|
25
|
-
timer
|
|
26
|
-
}) => {
|
|
27
|
-
const {
|
|
28
|
-
Manager
|
|
29
|
-
} = await import(/* webpackChunkName: "Manager" */"../Manager");
|
|
30
|
-
const {
|
|
31
|
-
IndexManager
|
|
32
|
-
} = await import(/* webpackChunkName: "IndexManager" */"../../settings");
|
|
33
|
-
const manager = new Manager({
|
|
34
|
-
elasticsearchClient: params?.elasticsearchClient,
|
|
35
|
-
documentClient: params?.documentClient,
|
|
36
|
-
response,
|
|
37
|
-
context,
|
|
38
|
-
isAborted,
|
|
39
|
-
isCloseToTimeout,
|
|
40
|
-
store,
|
|
41
|
-
timer
|
|
42
|
-
});
|
|
43
|
-
const indexManager = new IndexManager(manager.elasticsearch, {});
|
|
44
|
-
const createIndexesTaskRunner = new _CreateIndexesTaskRunner.CreateIndexesTaskRunner(manager, indexManager);
|
|
45
|
-
return createIndexesTaskRunner.execute(input.matching, Array.from(input.done || []));
|
|
46
|
-
},
|
|
47
|
-
async onBeforeTrigger({
|
|
48
|
-
context
|
|
49
|
-
}) {
|
|
50
|
-
// Let's create a new index for the tasks first.
|
|
51
|
-
const {
|
|
52
|
-
IndexManager
|
|
53
|
-
} = await import(/* webpackChunkName: "IndexManager" */"../../settings");
|
|
54
|
-
const indexManager = new IndexManager(context.elasticsearch, {});
|
|
55
|
-
const {
|
|
56
|
-
OnBeforeTrigger
|
|
57
|
-
} = await import(/* webpackChunkName: "OnBeforeTrigger" */"./OnBeforeTrigger");
|
|
58
|
-
const onBeforeTrigger = new OnBeforeTrigger({
|
|
59
|
-
indexManager,
|
|
60
|
-
context
|
|
61
|
-
});
|
|
62
|
-
await onBeforeTrigger.run(["webinytask"]);
|
|
63
|
-
}
|
|
12
|
+
// Register the task definition
|
|
13
|
+
context.container.registerFactory(TaskDefinition, () => {
|
|
14
|
+
const tenantContext = context.container.resolve(TenantContext);
|
|
15
|
+
const listTenantsUseCase = context.container.resolve(ListTenantsUseCase);
|
|
16
|
+
const indexFactories = context.container.resolveAll(OpensearchTenantIndexFactory);
|
|
17
|
+
return new CreateIndexesTaskDefinition(clients.elasticsearchClient, clients.documentClient, tenantContext, listTenantsUseCase, indexFactories);
|
|
18
|
+
});
|
|
64
19
|
});
|
|
65
20
|
};
|
|
66
|
-
exports.createIndexesTaskDefinition = createIndexesTaskDefinition;
|
|
67
21
|
|
|
68
22
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["TaskDefinition","createContextPlugin","getClients","CreateIndexesTaskDefinition","TenantContext","ListTenantsUseCase","OpensearchTenantIndexFactory","createIndexesTaskDefinition","params","context","clients","container","registerFactory","tenantContext","resolve","listTenantsUseCase","indexFactories","resolveAll","elasticsearchClient","documentClient"],"sources":["index.ts"],"sourcesContent":["import { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport type { Context, IElasticsearchTaskConfig } from \"~/types.js\";\nimport { createContextPlugin } from \"@webiny/api\";\nimport { getClients } from \"~/helpers/getClients.js\";\nimport { CreateIndexesTaskDefinition } from \"~/tasks/createIndexes/CreateIndexesTask.js\";\nimport { TenantContext } from \"@webiny/api-core/features/tenancy/TenantContext/index.js\";\nimport { ListTenantsUseCase } from \"@webiny/api-core/features/tenancy/ListTenants/index.js\";\nimport { OpensearchTenantIndexFactory } from \"~/abstractions/OpensearchTenantIndexFactory.js\";\n\nexport const createIndexesTaskDefinition = (params?: Partial<IElasticsearchTaskConfig>) => {\n return createContextPlugin<Context>(async context => {\n const clients = getClients(context, params);\n\n // Register the task definition\n context.container.registerFactory(TaskDefinition, () => {\n const tenantContext = context.container.resolve(TenantContext);\n const listTenantsUseCase = context.container.resolve(ListTenantsUseCase);\n const indexFactories = context.container.resolveAll(OpensearchTenantIndexFactory);\n\n return new CreateIndexesTaskDefinition(\n clients.elasticsearchClient,\n clients.documentClient,\n tenantContext,\n listTenantsUseCase,\n indexFactories\n );\n });\n });\n};\n"],"mappings":"AAAA,SAASA,cAAc,QAAQ,wDAAwD;AAEvF,SAASC,mBAAmB,QAAQ,aAAa;AACjD,SAASC,UAAU;AACnB,SAASC,2BAA2B;AACpC,SAASC,aAAa,QAAQ,0DAA0D;AACxF,SAASC,kBAAkB,QAAQ,wDAAwD;AAC3F,SAASC,4BAA4B;AAErC,OAAO,MAAMC,2BAA2B,GAAIC,MAA0C,IAAK;EACvF,OAAOP,mBAAmB,CAAU,MAAMQ,OAAO,IAAI;IACjD,MAAMC,OAAO,GAAGR,UAAU,CAACO,OAAO,EAAED,MAAM,CAAC;;IAE3C;IACAC,OAAO,CAACE,SAAS,CAACC,eAAe,CAACZ,cAAc,EAAE,MAAM;MACpD,MAAMa,aAAa,GAAGJ,OAAO,CAACE,SAAS,CAACG,OAAO,CAACV,aAAa,CAAC;MAC9D,MAAMW,kBAAkB,GAAGN,OAAO,CAACE,SAAS,CAACG,OAAO,CAACT,kBAAkB,CAAC;MACxE,MAAMW,cAAc,GAAGP,OAAO,CAACE,SAAS,CAACM,UAAU,CAACX,4BAA4B,CAAC;MAEjF,OAAO,IAAIH,2BAA2B,CAClCO,OAAO,CAACQ,mBAAmB,EAC3BR,OAAO,CAACS,cAAc,EACtBN,aAAa,EACbE,kBAAkB,EAClBC,cACJ,CAAC;IACL,CAAC,CAAC;EACN,CAAC,CAAC;AACN,CAAC","ignoreList":[]}
|
|
@@ -1,12 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
import type {
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
import type { I18NLocale } from "@webiny/api-i18n/types";
|
|
6
|
-
export interface IListIndexesParams {
|
|
7
|
-
context: Context;
|
|
8
|
-
plugins: CreateElasticsearchIndexTaskPlugin<Context>[];
|
|
9
|
-
tenants?: Tenant[];
|
|
10
|
-
locales?: I18NLocale[];
|
|
11
|
-
}
|
|
12
|
-
export declare const listIndexes: (params: IListIndexesParams) => Promise<CreateElasticsearchIndexTaskPluginIndex[]>;
|
|
1
|
+
import { OpensearchTenantIndexFactory } from "../../abstractions/OpensearchTenantIndexFactory.js";
|
|
2
|
+
import type { Tenant } from "@webiny/api-core/types/tenancy.js";
|
|
3
|
+
import { TenantContext } from "@webiny/api-core/features/tenancy/TenantContext/index.js";
|
|
4
|
+
export declare const listIndexes: (tenantContext: TenantContext.Interface, tenants: Tenant[], indexFactories: OpensearchTenantIndexFactory.Interface[]) => Promise<OpensearchTenantIndexFactory.IndexConfig[]>;
|
|
@@ -1,53 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.listIndexes = void 0;
|
|
7
|
-
const listIndexes = async params => {
|
|
8
|
-
const {
|
|
9
|
-
context,
|
|
10
|
-
plugins,
|
|
11
|
-
tenants: inputTenants,
|
|
12
|
-
locales: inputLocales
|
|
13
|
-
} = params;
|
|
14
|
-
if (plugins.length === 0) {
|
|
1
|
+
export const listIndexes = async (tenantContext, tenants, indexFactories) => {
|
|
2
|
+
if (indexFactories.length === 0) {
|
|
15
3
|
return [];
|
|
16
4
|
}
|
|
17
5
|
const indexes = [];
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
if (locales.length === 0) {
|
|
25
|
-
const [localesResult] = await context.i18n.locales.listLocales({
|
|
26
|
-
limit: 10000
|
|
27
|
-
});
|
|
28
|
-
locales = localesResult;
|
|
29
|
-
}
|
|
30
|
-
for (const locale of locales) {
|
|
31
|
-
for (const plugin of plugins) {
|
|
32
|
-
const results = await plugin.getIndexList({
|
|
33
|
-
context,
|
|
34
|
-
tenant: tenant.id,
|
|
35
|
-
locale: locale.code
|
|
36
|
-
});
|
|
37
|
-
for (const result of results) {
|
|
38
|
-
if (indexes.some(i => i.index === result.index)) {
|
|
39
|
-
continue;
|
|
40
|
-
}
|
|
41
|
-
indexes.push(result);
|
|
42
|
-
}
|
|
6
|
+
await tenantContext.withEachTenant(tenants, async tenant => {
|
|
7
|
+
for (const factory of indexFactories) {
|
|
8
|
+
const results = await factory.getIndexList(tenant);
|
|
9
|
+
for (const result of results) {
|
|
10
|
+
if (indexes.some(i => i.index === result.index)) {
|
|
11
|
+
continue;
|
|
43
12
|
}
|
|
13
|
+
indexes.push(result);
|
|
44
14
|
}
|
|
45
15
|
}
|
|
46
|
-
}
|
|
47
|
-
context.tenancy.setCurrentTenant(initialTenant);
|
|
48
|
-
}
|
|
16
|
+
});
|
|
49
17
|
return indexes;
|
|
50
18
|
};
|
|
51
|
-
exports.listIndexes = listIndexes;
|
|
52
19
|
|
|
53
20
|
//# sourceMappingURL=listIndexes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["listIndexes","
|
|
1
|
+
{"version":3,"names":["listIndexes","tenantContext","tenants","indexFactories","length","indexes","withEachTenant","tenant","factory","results","getIndexList","result","some","i","index","push"],"sources":["listIndexes.ts"],"sourcesContent":["import { OpensearchTenantIndexFactory } from \"~/abstractions/OpensearchTenantIndexFactory.js\";\nimport type { Tenant } from \"@webiny/api-core/types/tenancy.js\";\nimport { TenantContext } from \"@webiny/api-core/features/tenancy/TenantContext/index.js\";\n\nexport const listIndexes = async (\n tenantContext: TenantContext.Interface,\n tenants: Tenant[],\n indexFactories: OpensearchTenantIndexFactory.Interface[]\n): Promise<OpensearchTenantIndexFactory.IndexConfig[]> => {\n if (indexFactories.length === 0) {\n return [];\n }\n\n const indexes: OpensearchTenantIndexFactory.IndexConfig[] = [];\n await tenantContext.withEachTenant(tenants, async tenant => {\n for (const factory of indexFactories) {\n const results = await factory.getIndexList(tenant);\n for (const result of results) {\n if (indexes.some(i => i.index === result.index)) {\n continue;\n }\n indexes.push(result);\n }\n }\n });\n\n return indexes;\n};\n"],"mappings":"AAIA,OAAO,MAAMA,WAAW,GAAG,MAAAA,CACvBC,aAAsC,EACtCC,OAAiB,EACjBC,cAAwD,KACF;EACtD,IAAIA,cAAc,CAACC,MAAM,KAAK,CAAC,EAAE;IAC7B,OAAO,EAAE;EACb;EAEA,MAAMC,OAAmD,GAAG,EAAE;EAC9D,MAAMJ,aAAa,CAACK,cAAc,CAACJ,OAAO,EAAE,MAAMK,MAAM,IAAI;IACxD,KAAK,MAAMC,OAAO,IAAIL,cAAc,EAAE;MAClC,MAAMM,OAAO,GAAG,MAAMD,OAAO,CAACE,YAAY,CAACH,MAAM,CAAC;MAClD,KAAK,MAAMI,MAAM,IAAIF,OAAO,EAAE;QAC1B,IAAIJ,OAAO,CAACO,IAAI,CAACC,CAAC,IAAIA,CAAC,CAACC,KAAK,KAAKH,MAAM,CAACG,KAAK,CAAC,EAAE;UAC7C;QACJ;QACAT,OAAO,CAACU,IAAI,CAACJ,MAAM,CAAC;MACxB;IACJ;EACJ,CAAC,CAAC;EAEF,OAAON,OAAO;AAClB,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { TaskDefinition } from "@webiny/api-core/features/task/TaskDefinition/index.js";
|
|
2
|
+
import type { IElasticsearchTaskConfig } from "../../types.js";
|
|
3
|
+
import type { IDataSynchronizationInput, IDataSynchronizationOutput } from "../../tasks/dataSynchronization/types.js";
|
|
4
|
+
import { ElasticsearchSynchronize } from "../../tasks/dataSynchronization/elasticsearch/ElasticsearchSynchronize.js";
|
|
5
|
+
export declare const DATA_SYNCHRONIZATION_TASK = "dataSynchronization";
|
|
6
|
+
export declare class DataSynchronizationTask implements TaskDefinition.Interface<IDataSynchronizationInput, IDataSynchronizationOutput> {
|
|
7
|
+
private elasticsearchClient;
|
|
8
|
+
private documentClient;
|
|
9
|
+
private elasticsearchSynchronize;
|
|
10
|
+
id: string;
|
|
11
|
+
title: string;
|
|
12
|
+
description: string;
|
|
13
|
+
isPrivate: boolean;
|
|
14
|
+
maxIterations: number;
|
|
15
|
+
databaseLogs: boolean;
|
|
16
|
+
constructor(elasticsearchClient: IElasticsearchTaskConfig["elasticsearchClient"], documentClient: IElasticsearchTaskConfig["documentClient"], elasticsearchSynchronize: ElasticsearchSynchronize);
|
|
17
|
+
run({ input, controller }: TaskDefinition.RunParams<IDataSynchronizationInput, IDataSynchronizationOutput>): Promise<import("~/tasks/dataSynchronization/types.js").ISynchronizationRunResult>;
|
|
18
|
+
createInputValidation({ validator }: TaskDefinition.CreateInputValidationParams): {
|
|
19
|
+
flow: import("zod").ZodEnum<["elasticsearchToDynamoDb"]>;
|
|
20
|
+
elasticsearchToDynamoDb: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodObject<{
|
|
21
|
+
finished: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodBoolean>>;
|
|
22
|
+
index: import("zod").ZodOptional<import("zod").ZodString>;
|
|
23
|
+
cursor: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
|
|
24
|
+
}, "strip", import("zod").ZodTypeAny, {
|
|
25
|
+
finished: boolean;
|
|
26
|
+
index?: string | undefined;
|
|
27
|
+
cursor?: string[] | undefined;
|
|
28
|
+
}, {
|
|
29
|
+
index?: string | undefined;
|
|
30
|
+
cursor?: string[] | undefined;
|
|
31
|
+
finished?: boolean | undefined;
|
|
32
|
+
}>>>;
|
|
33
|
+
};
|
|
34
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
export const DATA_SYNCHRONIZATION_TASK = "dataSynchronization";
|
|
2
|
+
export class DataSynchronizationTask {
|
|
3
|
+
id = DATA_SYNCHRONIZATION_TASK;
|
|
4
|
+
title = "Data Synchronization";
|
|
5
|
+
description = "Synchronize data between Elasticsearch and DynamoDB";
|
|
6
|
+
isPrivate = false;
|
|
7
|
+
maxIterations = 100;
|
|
8
|
+
databaseLogs = false;
|
|
9
|
+
constructor(elasticsearchClient, documentClient, elasticsearchSynchronize) {
|
|
10
|
+
this.elasticsearchClient = elasticsearchClient;
|
|
11
|
+
this.documentClient = documentClient;
|
|
12
|
+
this.elasticsearchSynchronize = elasticsearchSynchronize;
|
|
13
|
+
}
|
|
14
|
+
async run({
|
|
15
|
+
input,
|
|
16
|
+
controller
|
|
17
|
+
}) {
|
|
18
|
+
if (controller.runtime.isAborted()) {
|
|
19
|
+
return controller.response.aborted();
|
|
20
|
+
}
|
|
21
|
+
const {
|
|
22
|
+
Manager
|
|
23
|
+
} = await import(/* webpackChunkName: "Manager" */"../Manager.js");
|
|
24
|
+
const {
|
|
25
|
+
IndexManager
|
|
26
|
+
} = await import(/* webpackChunkName: "IndexManager" */"../../settings/index.js");
|
|
27
|
+
const manager = new Manager({
|
|
28
|
+
elasticsearchClient: this.elasticsearchClient,
|
|
29
|
+
documentClient: this.documentClient,
|
|
30
|
+
controller
|
|
31
|
+
});
|
|
32
|
+
const indexManager = new IndexManager(manager.elasticsearch, {});
|
|
33
|
+
const {
|
|
34
|
+
DataSynchronizationTaskRunner
|
|
35
|
+
} = await import(/* webpackChunkName: "DataSynchronizationTaskRunner" */"./DataSynchronizationTaskRunner.js");
|
|
36
|
+
const {
|
|
37
|
+
createFactories
|
|
38
|
+
} = await import(/* webpackChunkName: "createFactories" */"./createFactories.js");
|
|
39
|
+
try {
|
|
40
|
+
const dataSynchronization = new DataSynchronizationTaskRunner({
|
|
41
|
+
manager,
|
|
42
|
+
indexManager,
|
|
43
|
+
factories: createFactories(),
|
|
44
|
+
elasticsearchSynchronize: this.elasticsearchSynchronize
|
|
45
|
+
});
|
|
46
|
+
return await dataSynchronization.run({
|
|
47
|
+
...input
|
|
48
|
+
});
|
|
49
|
+
} catch (ex) {
|
|
50
|
+
return controller.response.error(ex);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
createInputValidation({
|
|
54
|
+
validator
|
|
55
|
+
}) {
|
|
56
|
+
return {
|
|
57
|
+
flow: validator.enum(["elasticsearchToDynamoDb"]),
|
|
58
|
+
elasticsearchToDynamoDb: validator.object({
|
|
59
|
+
finished: validator.boolean().optional().default(false),
|
|
60
|
+
index: validator.string().optional(),
|
|
61
|
+
cursor: validator.array(validator.string()).optional()
|
|
62
|
+
}).optional().default({
|
|
63
|
+
finished: false
|
|
64
|
+
})
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
//# sourceMappingURL=DataSynchronizationTask.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["DATA_SYNCHRONIZATION_TASK","DataSynchronizationTask","id","title","description","isPrivate","maxIterations","databaseLogs","constructor","elasticsearchClient","documentClient","elasticsearchSynchronize","run","input","controller","runtime","isAborted","response","aborted","Manager","IndexManager","manager","indexManager","elasticsearch","DataSynchronizationTaskRunner","createFactories","dataSynchronization","factories","ex","error","createInputValidation","validator","flow","enum","elasticsearchToDynamoDb","object","finished","boolean","optional","default","index","string","cursor","array"],"sources":["DataSynchronizationTask.ts"],"sourcesContent":["import { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport type { IElasticsearchTaskConfig } from \"~/types.js\";\nimport type {\n IDataSynchronizationInput,\n IDataSynchronizationOutput\n} from \"~/tasks/dataSynchronization/types.js\";\nimport { ElasticsearchSynchronize } from \"~/tasks/dataSynchronization/elasticsearch/ElasticsearchSynchronize.js\";\n\nexport const DATA_SYNCHRONIZATION_TASK = \"dataSynchronization\";\n\nexport class DataSynchronizationTask\n implements TaskDefinition.Interface<IDataSynchronizationInput, IDataSynchronizationOutput>\n{\n id = DATA_SYNCHRONIZATION_TASK;\n title = \"Data Synchronization\";\n description = \"Synchronize data between Elasticsearch and DynamoDB\";\n isPrivate = false;\n maxIterations = 100;\n databaseLogs = false;\n\n constructor(\n private elasticsearchClient: IElasticsearchTaskConfig[\"elasticsearchClient\"],\n private documentClient: IElasticsearchTaskConfig[\"documentClient\"],\n private elasticsearchSynchronize: ElasticsearchSynchronize\n ) {}\n\n async run({\n input,\n controller\n }: TaskDefinition.RunParams<IDataSynchronizationInput, IDataSynchronizationOutput>) {\n if (controller.runtime.isAborted()) {\n return controller.response.aborted();\n }\n\n const { Manager } = await import(\n /* webpackChunkName: \"Manager\" */\n \"../Manager.js\"\n );\n\n const { IndexManager } = await import(\n /* webpackChunkName: \"IndexManager\" */ \"~/settings/index.js\"\n );\n\n const manager = new Manager<IDataSynchronizationInput, IDataSynchronizationOutput>({\n elasticsearchClient: this.elasticsearchClient,\n documentClient: this.documentClient,\n controller\n });\n\n const indexManager = new IndexManager(manager.elasticsearch, {});\n\n const { DataSynchronizationTaskRunner } = await import(\n /* webpackChunkName: \"DataSynchronizationTaskRunner\" */ \"./DataSynchronizationTaskRunner.js\"\n );\n\n const { createFactories } = await import(\n /* webpackChunkName: \"createFactories\" */ \"./createFactories.js\"\n );\n\n try {\n const dataSynchronization = new DataSynchronizationTaskRunner({\n manager,\n indexManager,\n factories: createFactories(),\n elasticsearchSynchronize: this.elasticsearchSynchronize\n });\n\n return await dataSynchronization.run({\n ...input\n });\n } catch (ex) {\n return controller.response.error(ex);\n }\n }\n\n createInputValidation({ validator }: TaskDefinition.CreateInputValidationParams) {\n return {\n flow: validator.enum([\"elasticsearchToDynamoDb\"]),\n elasticsearchToDynamoDb: validator\n .object({\n finished: validator.boolean().optional().default(false),\n index: validator.string().optional(),\n cursor: validator.array(validator.string()).optional()\n })\n .optional()\n .default({\n finished: false\n })\n };\n }\n}\n"],"mappings":"AAQA,OAAO,MAAMA,yBAAyB,GAAG,qBAAqB;AAE9D,OAAO,MAAMC,uBAAuB,CAEpC;EACIC,EAAE,GAAGF,yBAAyB;EAC9BG,KAAK,GAAG,sBAAsB;EAC9BC,WAAW,GAAG,qDAAqD;EACnEC,SAAS,GAAG,KAAK;EACjBC,aAAa,GAAG,GAAG;EACnBC,YAAY,GAAG,KAAK;EAEpBC,WAAWA,CACCC,mBAAoE,EACpEC,cAA0D,EAC1DC,wBAAkD,EAC5D;IAAA,KAHUF,mBAAoE,GAApEA,mBAAoE;IAAA,KACpEC,cAA0D,GAA1DA,cAA0D;IAAA,KAC1DC,wBAAkD,GAAlDA,wBAAkD;EAC3D;EAEH,MAAMC,GAAGA,CAAC;IACNC,KAAK;IACLC;EAC6E,CAAC,EAAE;IAChF,IAAIA,UAAU,CAACC,OAAO,CAACC,SAAS,CAAC,CAAC,EAAE;MAChC,OAAOF,UAAU,CAACG,QAAQ,CAACC,OAAO,CAAC,CAAC;IACxC;IAEA,MAAM;MAAEC;IAAQ,CAAC,GAAG,MAAM,MAAM,CAC5B,gDAEJ,CAAC;IAED,MAAM;MAAEC;IAAa,CAAC,GAAG,MAAM,MAAM,CACjC,+DACJ,CAAC;IAED,MAAMC,OAAO,GAAG,IAAIF,OAAO,CAAwD;MAC/EV,mBAAmB,EAAE,IAAI,CAACA,mBAAmB;MAC7CC,cAAc,EAAE,IAAI,CAACA,cAAc;MACnCI;IACJ,CAAC,CAAC;IAEF,MAAMQ,YAAY,GAAG,IAAIF,YAAY,CAACC,OAAO,CAACE,aAAa,EAAE,CAAC,CAAC,CAAC;IAEhE,MAAM;MAAEC;IAA8B,CAAC,GAAG,MAAM,MAAM,CAClD,2FACJ,CAAC;IAED,MAAM;MAAEC;IAAgB,CAAC,GAAG,MAAM,MAAM,CACpC,+DACJ,CAAC;IAED,IAAI;MACA,MAAMC,mBAAmB,GAAG,IAAIF,6BAA6B,CAAC;QAC1DH,OAAO;QACPC,YAAY;QACZK,SAAS,EAAEF,eAAe,CAAC,CAAC;QAC5Bd,wBAAwB,EAAE,IAAI,CAACA;MACnC,CAAC,CAAC;MAEF,OAAO,MAAMe,mBAAmB,CAACd,GAAG,CAAC;QACjC,GAAGC;MACP,CAAC,CAAC;IACN,CAAC,CAAC,OAAOe,EAAE,EAAE;MACT,OAAOd,UAAU,CAACG,QAAQ,CAACY,KAAK,CAACD,EAAE,CAAC;IACxC;EACJ;EAEAE,qBAAqBA,CAAC;IAAEC;EAAsD,CAAC,EAAE;IAC7E,OAAO;MACHC,IAAI,EAAED,SAAS,CAACE,IAAI,CAAC,CAAC,yBAAyB,CAAC,CAAC;MACjDC,uBAAuB,EAAEH,SAAS,CAC7BI,MAAM,CAAC;QACJC,QAAQ,EAAEL,SAAS,CAACM,OAAO,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC,CAACC,OAAO,CAAC,KAAK,CAAC;QACvDC,KAAK,EAAET,SAAS,CAACU,MAAM,CAAC,CAAC,CAACH,QAAQ,CAAC,CAAC;QACpCI,MAAM,EAAEX,SAAS,CAACY,KAAK,CAACZ,SAAS,CAACU,MAAM,CAAC,CAAC,CAAC,CAACH,QAAQ,CAAC;MACzD,CAAC,CAAC,CACDA,QAAQ,CAAC,CAAC,CACVC,OAAO,CAAC;QACLH,QAAQ,EAAE;MACd,CAAC;IACT,CAAC;EACL;AACJ","ignoreList":[]}
|
|
@@ -1,15 +1,18 @@
|
|
|
1
|
-
import type { IDataSynchronizationInput, IDataSynchronizationManager, IFactories } from "
|
|
2
|
-
import type { IIndexManager } from "../../settings/types";
|
|
1
|
+
import type { IDataSynchronizationInput, IDataSynchronizationManager, IFactories } from "../../tasks/dataSynchronization/types.js";
|
|
2
|
+
import type { IIndexManager } from "../../settings/types.js";
|
|
3
|
+
import { ElasticsearchSynchronize } from "../../tasks/dataSynchronization/elasticsearch/ElasticsearchSynchronize.js";
|
|
3
4
|
export interface IDataSynchronizationTaskRunnerParams {
|
|
4
5
|
manager: IDataSynchronizationManager;
|
|
5
6
|
indexManager: IIndexManager;
|
|
6
7
|
factories: IFactories;
|
|
8
|
+
elasticsearchSynchronize: ElasticsearchSynchronize;
|
|
7
9
|
}
|
|
8
10
|
export declare class DataSynchronizationTaskRunner {
|
|
9
11
|
private readonly manager;
|
|
10
12
|
private readonly indexManager;
|
|
11
13
|
private readonly factories;
|
|
14
|
+
private readonly elasticsearchSynchronize;
|
|
12
15
|
constructor(params: IDataSynchronizationTaskRunnerParams);
|
|
13
|
-
run(input: IDataSynchronizationInput): Promise<import("
|
|
16
|
+
run(input: IDataSynchronizationInput): Promise<import("~/tasks/dataSynchronization/types.js").ISynchronizationRunResult>;
|
|
14
17
|
private validateFlow;
|
|
15
18
|
}
|