@webiny/api-search-index-tasks 6.6.0-alpha.0
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/LICENSE +21 -0
- package/README.md +11 -0
- package/abstractions/IndexManager.d.ts +22 -0
- package/abstractions/IndexManager.js +5 -0
- package/abstractions/IndexManager.js.map +1 -0
- package/abstractions/IndexManagerFactory.d.ts +13 -0
- package/abstractions/IndexManagerFactory.js +5 -0
- package/abstractions/IndexManagerFactory.js.map +1 -0
- package/abstractions/IndexSettingsManager.d.ts +10 -0
- package/abstractions/IndexSettingsManager.js +5 -0
- package/abstractions/IndexSettingsManager.js.map +1 -0
- package/abstractions/StorageScanner.d.ts +20 -0
- package/abstractions/StorageScanner.js +5 -0
- package/abstractions/StorageScanner.js.map +1 -0
- package/abstractions/StorageWriter.d.ts +14 -0
- package/abstractions/StorageWriter.js +5 -0
- package/abstractions/StorageWriter.js.map +1 -0
- package/abstractions/TenantIndexFactory.d.ts +16 -0
- package/abstractions/TenantIndexFactory.js +5 -0
- package/abstractions/TenantIndexFactory.js.map +1 -0
- package/errors/IndexingDisableError.d.ts +2 -0
- package/errors/IndexingDisableError.js +5 -0
- package/errors/IndexingDisableError.js.map +1 -0
- package/errors/IndexingEnableError.d.ts +2 -0
- package/errors/IndexingEnableError.js +5 -0
- package/errors/IndexingEnableError.js.map +1 -0
- package/feature.d.ts +5 -0
- package/feature.js +27 -0
- package/feature.js.map +1 -0
- package/index.d.ts +23 -0
- package/index.js +23 -0
- package/package.json +39 -0
- package/settings/DisableIndexing.d.ts +11 -0
- package/settings/DisableIndexing.js +29 -0
- package/settings/DisableIndexing.js.map +1 -0
- package/settings/EnableIndexing.d.ts +11 -0
- package/settings/EnableIndexing.js +29 -0
- package/settings/EnableIndexing.js.map +1 -0
- package/settings/abstractions/DisableIndexing.d.ts +9 -0
- package/settings/abstractions/DisableIndexing.js +5 -0
- package/settings/abstractions/DisableIndexing.js.map +1 -0
- package/settings/abstractions/EnableIndexing.d.ts +9 -0
- package/settings/abstractions/EnableIndexing.js +5 -0
- package/settings/abstractions/EnableIndexing.js.map +1 -0
- package/tasks/createIndexes/CreateIndexesRunner.d.ts +19 -0
- package/tasks/createIndexes/CreateIndexesRunner.js +72 -0
- package/tasks/createIndexes/CreateIndexesRunner.js.map +1 -0
- package/tasks/createIndexes/CreateIndexesTask.d.ts +19 -0
- package/tasks/createIndexes/CreateIndexesTask.js +40 -0
- package/tasks/createIndexes/CreateIndexesTask.js.map +1 -0
- package/tasks/createIndexes/OnBeforeTrigger.d.ts +14 -0
- package/tasks/createIndexes/OnBeforeTrigger.js +52 -0
- package/tasks/createIndexes/OnBeforeTrigger.js.map +1 -0
- package/tasks/createIndexes/abstractions/CreateIndexesRunner.d.ts +14 -0
- package/tasks/createIndexes/abstractions/CreateIndexesRunner.js +5 -0
- package/tasks/createIndexes/abstractions/CreateIndexesRunner.js.map +1 -0
- package/tasks/createIndexes/abstractions/OnBeforeTrigger.d.ts +8 -0
- package/tasks/createIndexes/abstractions/OnBeforeTrigger.js +5 -0
- package/tasks/createIndexes/abstractions/OnBeforeTrigger.js.map +1 -0
- package/tasks/createIndexes/createIndexFactory.d.ts +6 -0
- package/tasks/createIndexes/createIndexFactory.js +15 -0
- package/tasks/createIndexes/createIndexFactory.js.map +1 -0
- package/tasks/createIndexes/listIndexes.d.ts +4 -0
- package/tasks/createIndexes/listIndexes.js +14 -0
- package/tasks/createIndexes/listIndexes.js.map +1 -0
- package/tasks/enableIndexing/EnableIndexingRunner.d.ts +13 -0
- package/tasks/enableIndexing/EnableIndexingRunner.js +40 -0
- package/tasks/enableIndexing/EnableIndexingRunner.js.map +1 -0
- package/tasks/enableIndexing/EnableIndexingTask.d.ts +16 -0
- package/tasks/enableIndexing/EnableIndexingTask.js +33 -0
- package/tasks/enableIndexing/EnableIndexingTask.js.map +1 -0
- package/tasks/enableIndexing/abstractions/EnableIndexingRunner.d.ts +15 -0
- package/tasks/enableIndexing/abstractions/EnableIndexingRunner.js +5 -0
- package/tasks/enableIndexing/abstractions/EnableIndexingRunner.js.map +1 -0
- package/tasks/reindex/ReindexRunner.d.ts +24 -0
- package/tasks/reindex/ReindexRunner.js +114 -0
- package/tasks/reindex/ReindexRunner.js.map +1 -0
- package/tasks/reindex/ReindexTask.d.ts +16 -0
- package/tasks/reindex/ReindexTask.js +30 -0
- package/tasks/reindex/ReindexTask.js.map +1 -0
- package/tasks/reindex/abstractions/ReindexRunner.d.ts +21 -0
- package/tasks/reindex/abstractions/ReindexRunner.js +5 -0
- package/tasks/reindex/abstractions/ReindexRunner.js.map +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tasks/createIndexes/CreateIndexesRunner.js","sources":["../../../src/tasks/createIndexes/CreateIndexesRunner.ts"],"sourcesContent":["import type { IIndexManager } from \"~/abstractions/IndexManager.js\";\nimport type { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport { TaskController } from \"@webiny/api-core/features/task/TaskController/index.js\";\nimport { TenantContext } from \"@webiny/api-core/features/tenancy/TenantContext/index.js\";\nimport { TenantIndexFactory } from \"~/abstractions/TenantIndexFactory.js\";\nimport { ListTenantsUseCase } from \"@webiny/api-core/features/tenancy/ListTenants/index.js\";\nimport { listIndexes } from \"./listIndexes.js\";\nimport { createIndexFactory } from \"./createIndexFactory.js\";\nimport { CreateIndexesRunner as Abstraction } from \"./abstractions/CreateIndexesRunner.js\";\n\nclass CreateIndexesRunnerImpl implements Abstraction.Interface {\n constructor(\n private readonly controller: TaskController.Interface,\n private readonly tenantContext: TenantContext.Interface,\n private readonly listTenantsUseCase: ListTenantsUseCase.Interface,\n private readonly indexFactories: TenantIndexFactory.Interface[]\n ) {}\n\n public async execute(\n matching: string | undefined,\n done: string[],\n indexManager: IIndexManager\n ): Promise<TaskDefinition.Result> {\n if (this.indexFactories.length === 0) {\n return this.controller.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.controller.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 factory = createIndexFactory(indexManager);\n\n for (const { index, settings } of indexes) {\n if (this.controller.runtime.isAborted()) {\n return this.controller.response.aborted();\n } else if (this.controller.runtime.isCloseToTimeout()) {\n return this.controller.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 indexManager.indexExists(index);\n if (exists) {\n continue;\n }\n done.push(index);\n await factory.create(index, settings);\n await this.controller.logger.info({\n message: `Index \"${index}\" created.`,\n data: { index }\n });\n } catch (ex) {\n await this.controller.logger.error({\n message: `Failed to create index \"${index}\".`,\n error: ex\n });\n }\n }\n\n return this.controller.response.done(\"Indexes created.\", {\n done\n });\n }\n}\n\nexport const CreateIndexesRunner = Abstraction.createImplementation({\n implementation: CreateIndexesRunnerImpl,\n dependencies: [\n TaskController,\n TenantContext,\n ListTenantsUseCase,\n [TenantIndexFactory, { multiple: true }]\n ]\n});\n"],"names":["CreateIndexesRunnerImpl","controller","tenantContext","listTenantsUseCase","indexFactories","matching","done","indexManager","tenantsResult","tenants","indexes","listIndexes","isIndexAllowed","index","factory","createIndexFactory","settings","exists","ex","CreateIndexesRunner","Abstraction","TaskController","TenantContext","ListTenantsUseCase","TenantIndexFactory"],"mappings":";;;;;;;AAUA,MAAMA;IACF,YACqBC,UAAoC,EACpCC,aAAsC,EACtCC,kBAAgD,EAChDC,cAA8C,CACjE;aAJmBH,UAAU,GAAVA;aACAC,aAAa,GAAbA;aACAC,kBAAkB,GAAlBA;aACAC,cAAc,GAAdA;IAClB;IAEH,MAAa,QACTC,QAA4B,EAC5BC,IAAc,EACdC,YAA2B,EACG;QAC9B,IAAI,AAA+B,MAA/B,IAAI,CAAC,cAAc,CAAC,MAAM,EAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC;QAGzC,MAAMC,gBAAgB,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO;QAC3D,MAAMC,UAAUD,cAAc,KAAK;QAEnC,MAAME,UAAU,MAAMC,YAAY,IAAI,CAAC,aAAa,EAAEF,SAAS,IAAI,CAAC,cAAc;QAElF,IAAIC,AAAmB,MAAnBA,QAAQ,MAAM,EACd,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC;QAGzC,MAAME,iBAAiB,CAACC;YACpB,IAAI,AAAoB,YAApB,OAAOR,YAAyB,CAACA,UACjC,OAAO;YAEX,OAAOQ,MAAM,QAAQ,CAACR;QAC1B;QAEA,MAAMS,UAAUC,mBAAmBR;QAEnC,KAAK,MAAM,EAAEM,KAAK,EAAEG,QAAQ,EAAE,IAAIN,QAAS;YACvC,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,IACjC,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO;YACpC,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,gBAAgB,IAC/C,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBACrCJ;YACJ;YAEJ,IAAI;gBACA,IAAIA,KAAK,QAAQ,CAACO,QACd;gBACG,IAAID,AAA0B,UAA1BA,eAAeC,QACtB;gBAEJ,MAAMI,SAAS,MAAMV,aAAa,WAAW,CAACM;gBAC9C,IAAII,QACA;gBAEJX,KAAK,IAAI,CAACO;gBACV,MAAMC,QAAQ,MAAM,CAACD,OAAOG;gBAC5B,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC;oBAC9B,SAAS,CAAC,OAAO,EAAEH,MAAM,UAAU,CAAC;oBACpC,MAAM;wBAAEA;oBAAM;gBAClB;YACJ,EAAE,OAAOK,IAAI;gBACT,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC;oBAC/B,SAAS,CAAC,wBAAwB,EAAEL,MAAM,EAAE,CAAC;oBAC7C,OAAOK;gBACX;YACJ;QACJ;QAEA,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB;YACrDZ;QACJ;IACJ;AACJ;AAEO,MAAMa,0CAAsBC,oBAAAA,oBAAgC,CAAC;IAChE,gBAAgBpB;IAChB,cAAc;QACVqB;QACAC;QACAC;QACA;YAACC;YAAoB;gBAAE,UAAU;YAAK;SAAE;KAC3C;AACL"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { TaskDefinition } from "@webiny/api-core/features/task/TaskDefinition/index.js";
|
|
2
|
+
import { CreateIndexesRunner } from "./abstractions/CreateIndexesRunner.js";
|
|
3
|
+
import { OnBeforeTrigger } from "./abstractions/OnBeforeTrigger.js";
|
|
4
|
+
import { IndexManagerFactory } from "../../abstractions/IndexManagerFactory.js";
|
|
5
|
+
declare class CreateIndexesTaskImpl implements TaskDefinition.Interface<CreateIndexesRunner.Input> {
|
|
6
|
+
private readonly indexManagerFactory;
|
|
7
|
+
private readonly runner;
|
|
8
|
+
private readonly onBeforeTriggerRunner;
|
|
9
|
+
readonly id = "elasticsearchCreateIndexes";
|
|
10
|
+
readonly title = "Create Missing Search Indexes";
|
|
11
|
+
readonly maxIterations = 2;
|
|
12
|
+
constructor(indexManagerFactory: IndexManagerFactory.Interface, runner: CreateIndexesRunner.Interface, onBeforeTriggerRunner: OnBeforeTrigger.Interface);
|
|
13
|
+
run({ input, controller }: TaskDefinition.RunParams<CreateIndexesRunner.Input>): Promise<TaskDefinition.Result<import("@webiny/api-core/features/task/TaskDefinition/abstractions.js").ITaskInput, import("@webiny/api-core/features/task/TaskDefinition/abstractions.js").ITaskOutput>>;
|
|
14
|
+
onBeforeTrigger(): Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
export declare const CreateIndexesTask: typeof CreateIndexesTaskImpl & {
|
|
17
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/task/TaskDefinition/abstractions.js").ITaskDefinition<import("@webiny/api-core/features/task/TaskDefinition/abstractions.js").ITaskInput, import("@webiny/api-core/features/task/TaskDefinition/abstractions.js").ITaskOutput>>;
|
|
18
|
+
};
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { TaskDefinition } from "@webiny/api-core/features/task/TaskDefinition/index.js";
|
|
2
|
+
import { CreateIndexesRunner } from "./abstractions/CreateIndexesRunner.js";
|
|
3
|
+
import { OnBeforeTrigger } from "./abstractions/OnBeforeTrigger.js";
|
|
4
|
+
import { IndexManagerFactory } from "../../abstractions/IndexManagerFactory.js";
|
|
5
|
+
class CreateIndexesTaskImpl {
|
|
6
|
+
constructor(indexManagerFactory, runner, onBeforeTriggerRunner){
|
|
7
|
+
this.indexManagerFactory = indexManagerFactory;
|
|
8
|
+
this.runner = runner;
|
|
9
|
+
this.onBeforeTriggerRunner = onBeforeTriggerRunner;
|
|
10
|
+
this.id = "elasticsearchCreateIndexes";
|
|
11
|
+
this.title = "Create Missing Search Indexes";
|
|
12
|
+
this.maxIterations = 2;
|
|
13
|
+
}
|
|
14
|
+
async run({ input, controller }) {
|
|
15
|
+
if (controller.runtime.isAborted()) return controller.response.aborted();
|
|
16
|
+
const indexManager = this.indexManagerFactory.createIndexManager({
|
|
17
|
+
settings: {}
|
|
18
|
+
});
|
|
19
|
+
return this.runner.execute(input.matching, Array.from(input.done || []), indexManager);
|
|
20
|
+
}
|
|
21
|
+
async onBeforeTrigger() {
|
|
22
|
+
const indexManager = this.indexManagerFactory.createIndexManager({
|
|
23
|
+
settings: {}
|
|
24
|
+
});
|
|
25
|
+
await this.onBeforeTriggerRunner.run([
|
|
26
|
+
"wbytask"
|
|
27
|
+
], indexManager);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
const CreateIndexesTask = TaskDefinition.createImplementation({
|
|
31
|
+
implementation: CreateIndexesTaskImpl,
|
|
32
|
+
dependencies: [
|
|
33
|
+
IndexManagerFactory,
|
|
34
|
+
CreateIndexesRunner,
|
|
35
|
+
OnBeforeTrigger
|
|
36
|
+
]
|
|
37
|
+
});
|
|
38
|
+
export { CreateIndexesTask };
|
|
39
|
+
|
|
40
|
+
//# sourceMappingURL=CreateIndexesTask.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tasks/createIndexes/CreateIndexesTask.js","sources":["../../../src/tasks/createIndexes/CreateIndexesTask.ts"],"sourcesContent":["import { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport { CreateIndexesRunner } from \"./abstractions/CreateIndexesRunner.js\";\nimport { OnBeforeTrigger } from \"./abstractions/OnBeforeTrigger.js\";\nimport { IndexManagerFactory } from \"~/abstractions/IndexManagerFactory.js\";\n\nclass CreateIndexesTaskImpl implements TaskDefinition.Interface<CreateIndexesRunner.Input> {\n public readonly id = \"elasticsearchCreateIndexes\";\n public readonly title = \"Create Missing Search Indexes\";\n public readonly maxIterations = 2;\n\n constructor(\n private readonly indexManagerFactory: IndexManagerFactory.Interface,\n private readonly runner: CreateIndexesRunner.Interface,\n private readonly onBeforeTriggerRunner: OnBeforeTrigger.Interface\n ) {}\n\n async run({ input, controller }: TaskDefinition.RunParams<CreateIndexesRunner.Input>) {\n if (controller.runtime.isAborted()) {\n return controller.response.aborted();\n }\n\n const indexManager = this.indexManagerFactory.createIndexManager({\n settings: {}\n });\n\n return this.runner.execute(input.matching, Array.from(input.done || []), indexManager);\n }\n\n async onBeforeTrigger() {\n const indexManager = this.indexManagerFactory.createIndexManager({\n settings: {}\n });\n\n await this.onBeforeTriggerRunner.run([\"wbytask\"], indexManager);\n }\n}\n\nexport const CreateIndexesTask = TaskDefinition.createImplementation({\n implementation: CreateIndexesTaskImpl,\n dependencies: [IndexManagerFactory, CreateIndexesRunner, OnBeforeTrigger]\n});\n"],"names":["CreateIndexesTaskImpl","indexManagerFactory","runner","onBeforeTriggerRunner","input","controller","indexManager","Array","CreateIndexesTask","TaskDefinition","IndexManagerFactory","CreateIndexesRunner","OnBeforeTrigger"],"mappings":";;;;AAKA,MAAMA;IAKF,YACqBC,mBAAkD,EAClDC,MAAqC,EACrCC,qBAAgD,CACnE;aAHmBF,mBAAmB,GAAnBA;aACAC,MAAM,GAANA;aACAC,qBAAqB,GAArBA;aAPL,EAAE,GAAG;aACL,KAAK,GAAG;aACR,aAAa,GAAG;IAM7B;IAEH,MAAM,IAAI,EAAEC,KAAK,EAAEC,UAAU,EAAuD,EAAE;QAClF,IAAIA,WAAW,OAAO,CAAC,SAAS,IAC5B,OAAOA,WAAW,QAAQ,CAAC,OAAO;QAGtC,MAAMC,eAAe,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC;YAC7D,UAAU,CAAC;QACf;QAEA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAACF,MAAM,QAAQ,EAAEG,MAAM,IAAI,CAACH,MAAM,IAAI,IAAI,EAAE,GAAGE;IAC7E;IAEA,MAAM,kBAAkB;QACpB,MAAMA,eAAe,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC;YAC7D,UAAU,CAAC;QACf;QAEA,MAAM,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC;YAAC;SAAU,EAAEA;IACtD;AACJ;AAEO,MAAME,oBAAoBC,eAAe,oBAAoB,CAAC;IACjE,gBAAgBT;IAChB,cAAc;QAACU;QAAqBC;QAAqBC;KAAgB;AAC7E"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { IIndexManager } from "../../abstractions/IndexManager.js";
|
|
2
|
+
import { TenantContext } from "@webiny/api-core/features/tenancy/TenantContext/index.js";
|
|
3
|
+
import { TenantIndexFactory } from "../../abstractions/TenantIndexFactory.js";
|
|
4
|
+
import { OnBeforeTrigger as Abstraction } from "./abstractions/OnBeforeTrigger.js";
|
|
5
|
+
declare class OnBeforeTriggerImpl implements Abstraction.Interface {
|
|
6
|
+
private readonly tenantContext;
|
|
7
|
+
private readonly indexFactories;
|
|
8
|
+
constructor(tenantContext: TenantContext.Interface, indexFactories: TenantIndexFactory.Interface[]);
|
|
9
|
+
run(targets: string[] | undefined, indexManager: IIndexManager): Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
export declare const OnBeforeTrigger: typeof OnBeforeTriggerImpl & {
|
|
12
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions/OnBeforeTrigger.js").IOnBeforeTrigger>;
|
|
13
|
+
};
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { TenantContext } from "@webiny/api-core/features/tenancy/TenantContext/index.js";
|
|
2
|
+
import { TenantIndexFactory } from "../../abstractions/TenantIndexFactory.js";
|
|
3
|
+
import { listIndexes } from "./listIndexes.js";
|
|
4
|
+
import { createIndexFactory } from "./createIndexFactory.js";
|
|
5
|
+
import { OnBeforeTrigger } from "./abstractions/OnBeforeTrigger.js";
|
|
6
|
+
class OnBeforeTriggerImpl {
|
|
7
|
+
constructor(tenantContext, indexFactories){
|
|
8
|
+
this.tenantContext = tenantContext;
|
|
9
|
+
this.indexFactories = indexFactories;
|
|
10
|
+
}
|
|
11
|
+
async run(targets, indexManager) {
|
|
12
|
+
const tenant = this.tenantContext.getTenant();
|
|
13
|
+
if (!tenant) throw new Error("Something went wrong, tenant not found when triggering a task.");
|
|
14
|
+
try {
|
|
15
|
+
const allIndexes = await listIndexes(this.tenantContext, [
|
|
16
|
+
tenant
|
|
17
|
+
], this.indexFactories);
|
|
18
|
+
const indexes = allIndexes.filter((index)=>{
|
|
19
|
+
if (!targets?.length) return true;
|
|
20
|
+
for (const t of targets)if (index.index.includes(t)) return true;
|
|
21
|
+
return false;
|
|
22
|
+
});
|
|
23
|
+
if (0 === indexes.length) return void console.warn("There are no indexes to create before triggering the Create indexes task.", {
|
|
24
|
+
targets
|
|
25
|
+
});
|
|
26
|
+
const factory = createIndexFactory(indexManager);
|
|
27
|
+
for (const { index, settings } of indexes)try {
|
|
28
|
+
console.log("Creating index", index);
|
|
29
|
+
await factory.createIfNotExists(index, settings);
|
|
30
|
+
} catch (ex) {
|
|
31
|
+
console.error(`Failed to create index "${index}".`, ex);
|
|
32
|
+
}
|
|
33
|
+
} catch (ex) {
|
|
34
|
+
console.error(ex);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
const OnBeforeTrigger_OnBeforeTrigger = OnBeforeTrigger.createImplementation({
|
|
39
|
+
implementation: OnBeforeTriggerImpl,
|
|
40
|
+
dependencies: [
|
|
41
|
+
TenantContext,
|
|
42
|
+
[
|
|
43
|
+
TenantIndexFactory,
|
|
44
|
+
{
|
|
45
|
+
multiple: true
|
|
46
|
+
}
|
|
47
|
+
]
|
|
48
|
+
]
|
|
49
|
+
});
|
|
50
|
+
export { OnBeforeTrigger_OnBeforeTrigger as OnBeforeTrigger };
|
|
51
|
+
|
|
52
|
+
//# sourceMappingURL=OnBeforeTrigger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tasks/createIndexes/OnBeforeTrigger.js","sources":["../../../src/tasks/createIndexes/OnBeforeTrigger.ts"],"sourcesContent":["import type { IIndexManager } from \"~/abstractions/IndexManager.js\";\nimport { TenantContext } from \"@webiny/api-core/features/tenancy/TenantContext/index.js\";\nimport { TenantIndexFactory } from \"~/abstractions/TenantIndexFactory.js\";\nimport { listIndexes } from \"./listIndexes.js\";\nimport { createIndexFactory } from \"./createIndexFactory.js\";\nimport { OnBeforeTrigger as Abstraction } from \"./abstractions/OnBeforeTrigger.js\";\n\nclass OnBeforeTriggerImpl implements Abstraction.Interface {\n constructor(\n private readonly tenantContext: TenantContext.Interface,\n private readonly indexFactories: TenantIndexFactory.Interface[]\n ) {}\n\n public async run(targets: string[] | undefined, indexManager: IIndexManager): 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 factory = createIndexFactory(indexManager);\n\n for (const { index, settings } of indexes) {\n try {\n console.log(\"Creating index\", index);\n await factory.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\nexport const OnBeforeTrigger = Abstraction.createImplementation({\n implementation: OnBeforeTriggerImpl,\n dependencies: [TenantContext, [TenantIndexFactory, { multiple: true }]]\n});\n"],"names":["OnBeforeTriggerImpl","tenantContext","indexFactories","targets","indexManager","tenant","Error","allIndexes","listIndexes","indexes","index","t","console","factory","createIndexFactory","settings","ex","OnBeforeTrigger","Abstraction","TenantContext","TenantIndexFactory"],"mappings":";;;;;AAOA,MAAMA;IACF,YACqBC,aAAsC,EACtCC,cAA8C,CACjE;aAFmBD,aAAa,GAAbA;aACAC,cAAc,GAAdA;IAClB;IAEH,MAAa,IAAIC,OAA6B,EAAEC,YAA2B,EAAiB;QACxF,MAAMC,SAAS,IAAI,CAAC,aAAa,CAAC,SAAS;QAC3C,IAAI,CAACA,QACD,MAAM,IAAIC,MAAM;QAGpB,IAAI;YACA,MAAMC,aAAa,MAAMC,YAAY,IAAI,CAAC,aAAa,EAAE;gBAACH;aAAO,EAAE,IAAI,CAAC,cAAc;YAEtF,MAAMI,UAAUF,WAAW,MAAM,CAACG,CAAAA;gBAC9B,IAAI,CAACP,SAAS,QACV,OAAO;gBAEX,KAAK,MAAMQ,KAAKR,QACZ,IAAIO,MAAM,KAAK,CAAC,QAAQ,CAACC,IACrB,OAAO;gBAGf,OAAO;YACX;YACA,IAAIF,AAAmB,MAAnBA,QAAQ,MAAM,EAAQ,YACtBG,QAAQ,IAAI,CACR,6EACA;gBACIT;YACJ;YAKR,MAAMU,UAAUC,mBAAmBV;YAEnC,KAAK,MAAM,EAAEM,KAAK,EAAEK,QAAQ,EAAE,IAAIN,QAC9B,IAAI;gBACAG,QAAQ,GAAG,CAAC,kBAAkBF;gBAC9B,MAAMG,QAAQ,iBAAiB,CAACH,OAAOK;YAC3C,EAAE,OAAOC,IAAI;gBACTJ,QAAQ,KAAK,CAAC,CAAC,wBAAwB,EAAEF,MAAM,EAAE,CAAC,EAAEM;YACxD;QAER,EAAE,OAAOA,IAAI;YACTJ,QAAQ,KAAK,CAACI;QAClB;IACJ;AACJ;AAEO,MAAMC,kCAAkBC,gBAAAA,oBAAgC,CAAC;IAC5D,gBAAgBlB;IAChB,cAAc;QAACmB;QAAe;YAACC;YAAoB;gBAAE,UAAU;YAAK;SAAE;KAAC;AAC3E"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { IIndexManager } from "../../../abstractions/IndexManager.js";
|
|
2
|
+
import type { TaskDefinition } from "@webiny/api-core/features/task/TaskDefinition/index.js";
|
|
3
|
+
export interface ICreateIndexesInput {
|
|
4
|
+
matching?: string;
|
|
5
|
+
done?: string[];
|
|
6
|
+
}
|
|
7
|
+
export interface ICreateIndexesRunner {
|
|
8
|
+
execute(matching: string | undefined, done: string[], indexManager: IIndexManager): Promise<TaskDefinition.Result>;
|
|
9
|
+
}
|
|
10
|
+
export declare const CreateIndexesRunner: import("@webiny/di").Abstraction<ICreateIndexesRunner>;
|
|
11
|
+
export declare namespace CreateIndexesRunner {
|
|
12
|
+
type Interface = ICreateIndexesRunner;
|
|
13
|
+
type Input = ICreateIndexesInput;
|
|
14
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tasks/createIndexes/abstractions/CreateIndexesRunner.js","sources":["../../../../src/tasks/createIndexes/abstractions/CreateIndexesRunner.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { IIndexManager } from \"~/abstractions/IndexManager.js\";\nimport type { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\n\nexport interface ICreateIndexesInput {\n matching?: string;\n done?: string[];\n}\n\nexport interface ICreateIndexesRunner {\n execute(\n matching: string | undefined,\n done: string[],\n indexManager: IIndexManager\n ): Promise<TaskDefinition.Result>;\n}\n\nexport const CreateIndexesRunner = createAbstraction<ICreateIndexesRunner>(\n \"SearchIndexTasks/CreateIndexesRunner\"\n);\n\nexport namespace CreateIndexesRunner {\n export type Interface = ICreateIndexesRunner;\n export type Input = ICreateIndexesInput;\n}\n"],"names":["CreateIndexesRunner","createAbstraction"],"mappings":";AAiBO,MAAMA,sBAAsBC,kBAC/B"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { IIndexManager } from "../../../abstractions/IndexManager.js";
|
|
2
|
+
export interface IOnBeforeTrigger {
|
|
3
|
+
run(targets: string[] | undefined, indexManager: IIndexManager): Promise<void>;
|
|
4
|
+
}
|
|
5
|
+
export declare const OnBeforeTrigger: import("@webiny/di").Abstraction<IOnBeforeTrigger>;
|
|
6
|
+
export declare namespace OnBeforeTrigger {
|
|
7
|
+
type Interface = IOnBeforeTrigger;
|
|
8
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tasks/createIndexes/abstractions/OnBeforeTrigger.js","sources":["../../../../src/tasks/createIndexes/abstractions/OnBeforeTrigger.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { IIndexManager } from \"~/abstractions/IndexManager.js\";\n\nexport interface IOnBeforeTrigger {\n run(targets: string[] | undefined, indexManager: IIndexManager): Promise<void>;\n}\n\nexport const OnBeforeTrigger = createAbstraction<IOnBeforeTrigger>(\n \"SearchIndexTasks/OnBeforeTrigger\"\n);\n\nexport namespace OnBeforeTrigger {\n export type Interface = IOnBeforeTrigger;\n}\n"],"names":["OnBeforeTrigger","createAbstraction"],"mappings":";AAOO,MAAMA,kBAAkBC,kBAC3B"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { IIndexManager } from "../../abstractions/IndexManager.js";
|
|
2
|
+
import type { GenericRecord } from "@webiny/api/types.js";
|
|
3
|
+
export declare const createIndexFactory: (manager: IIndexManager) => {
|
|
4
|
+
create: (index: string, settings?: GenericRecord) => Promise<void>;
|
|
5
|
+
createIfNotExists: (index: string, settings?: GenericRecord) => Promise<void>;
|
|
6
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
const createIndexFactory = (manager)=>({
|
|
2
|
+
create: async (index, settings)=>manager.createIndex(index, settings),
|
|
3
|
+
createIfNotExists: async (index, settings)=>{
|
|
4
|
+
try {
|
|
5
|
+
const exists = await manager.indexExists(index);
|
|
6
|
+
if (exists) return;
|
|
7
|
+
} catch {
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
return await manager.createIndex(index, settings);
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
export { createIndexFactory };
|
|
14
|
+
|
|
15
|
+
//# sourceMappingURL=createIndexFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tasks/createIndexes/createIndexFactory.js","sources":["../../../src/tasks/createIndexes/createIndexFactory.ts"],"sourcesContent":["import type { IIndexManager } from \"~/abstractions/IndexManager.js\";\nimport type { GenericRecord } from \"@webiny/api/types.js\";\n\nexport const createIndexFactory = (manager: IIndexManager) => {\n return {\n create: async (index: string, settings?: GenericRecord): Promise<void> => {\n return manager.createIndex(index, settings);\n },\n createIfNotExists: async (index: string, settings?: GenericRecord): 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"],"names":["createIndexFactory","manager","index","settings","exists"],"mappings":"AAGO,MAAMA,qBAAqB,CAACC,UACxB;QACH,QAAQ,OAAOC,OAAeC,WACnBF,QAAQ,WAAW,CAACC,OAAOC;QAEtC,mBAAmB,OAAOD,OAAeC;YACrC,IAAI;gBACA,MAAMC,SAAS,MAAMH,QAAQ,WAAW,CAACC;gBACzC,IAAIE,QACA;YAER,EAAE,OAAM;gBACJ;YACJ;YAEA,OAAO,MAAMH,QAAQ,WAAW,CAACC,OAAOC;QAC5C;IACJ"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { TenantIndexFactory } from "../../abstractions/TenantIndexFactory.js";
|
|
2
|
+
import type { Tenant } from "@webiny/api-core/types/tenancy.js";
|
|
3
|
+
import type { TenantContext } from "@webiny/api-core/features/tenancy/TenantContext/index.js";
|
|
4
|
+
export declare const listIndexes: (tenantContext: TenantContext.Interface, tenants: Tenant[], indexFactories: TenantIndexFactory.Interface[]) => Promise<TenantIndexFactory.IndexConfig[]>;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
const listIndexes = async (tenantContext, tenants, indexFactories)=>{
|
|
2
|
+
if (0 === indexFactories.length) return [];
|
|
3
|
+
const indexes = [];
|
|
4
|
+
await tenantContext.withEachTenant(tenants, async (tenant)=>{
|
|
5
|
+
for (const factory of indexFactories){
|
|
6
|
+
const results = await factory.getIndexList(tenant);
|
|
7
|
+
for (const result of results)if (!indexes.some((i)=>i.index === result.index)) indexes.push(result);
|
|
8
|
+
}
|
|
9
|
+
});
|
|
10
|
+
return indexes;
|
|
11
|
+
};
|
|
12
|
+
export { listIndexes };
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=listIndexes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tasks/createIndexes/listIndexes.js","sources":["../../../src/tasks/createIndexes/listIndexes.ts"],"sourcesContent":["import type { TenantIndexFactory } from \"~/abstractions/TenantIndexFactory.js\";\nimport type { Tenant } from \"@webiny/api-core/types/tenancy.js\";\nimport type { TenantContext } from \"@webiny/api-core/features/tenancy/TenantContext/index.js\";\n\nexport const listIndexes = async (\n tenantContext: TenantContext.Interface,\n tenants: Tenant[],\n indexFactories: TenantIndexFactory.Interface[]\n): Promise<TenantIndexFactory.IndexConfig[]> => {\n if (indexFactories.length === 0) {\n return [];\n }\n\n const indexes: TenantIndexFactory.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"],"names":["listIndexes","tenantContext","tenants","indexFactories","indexes","tenant","factory","results","result","i"],"mappings":"AAIO,MAAMA,cAAc,OACvBC,eACAC,SACAC;IAEA,IAAIA,AAA0B,MAA1BA,eAAe,MAAM,EACrB,OAAO,EAAE;IAGb,MAAMC,UAA4C,EAAE;IACpD,MAAMH,cAAc,cAAc,CAACC,SAAS,OAAMG;QAC9C,KAAK,MAAMC,WAAWH,eAAgB;YAClC,MAAMI,UAAU,MAAMD,QAAQ,YAAY,CAACD;YAC3C,KAAK,MAAMG,UAAUD,QACjB,KAAIH,QAAQ,IAAI,CAACK,CAAAA,IAAKA,EAAE,KAAK,KAAKD,OAAO,KAAK,GAG9CJ,QAAQ,IAAI,CAACI;QAErB;IACJ;IAEA,OAAOJ;AACX"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { IIndexManager } from "../../abstractions/IndexManager.js";
|
|
2
|
+
import type { TaskDefinition } from "@webiny/api-core/features/task/TaskDefinition/index.js";
|
|
3
|
+
import { TaskController } from "@webiny/api-core/features/task/TaskController/index.js";
|
|
4
|
+
import { EnableIndexingRunner as Abstraction } from "./abstractions/EnableIndexingRunner.js";
|
|
5
|
+
declare class EnableIndexingRunnerImpl implements Abstraction.Interface {
|
|
6
|
+
private readonly controller;
|
|
7
|
+
constructor(controller: TaskController.Interface);
|
|
8
|
+
execute(matching: string | undefined, indexManager: IIndexManager): Promise<TaskDefinition.Result<Abstraction.Input>>;
|
|
9
|
+
}
|
|
10
|
+
export declare const EnableIndexingRunner: typeof EnableIndexingRunnerImpl & {
|
|
11
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions/EnableIndexingRunner.js").IEnableIndexingRunner>;
|
|
12
|
+
};
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { TaskController } from "@webiny/api-core/features/task/TaskController/index.js";
|
|
2
|
+
import { EnableIndexingRunner } from "./abstractions/EnableIndexingRunner.js";
|
|
3
|
+
class EnableIndexingRunnerImpl {
|
|
4
|
+
constructor(controller){
|
|
5
|
+
this.controller = controller;
|
|
6
|
+
}
|
|
7
|
+
async execute(matching, indexManager) {
|
|
8
|
+
if (this.controller.runtime.isAborted()) return this.controller.response.aborted();
|
|
9
|
+
const isIndexAllowed = (index)=>{
|
|
10
|
+
if ("string" != typeof matching || !matching) return true;
|
|
11
|
+
return index.includes(matching);
|
|
12
|
+
};
|
|
13
|
+
const indexes = await indexManager.list();
|
|
14
|
+
const enabled = [];
|
|
15
|
+
const failed = [];
|
|
16
|
+
for (const index of indexes)if (isIndexAllowed(index)) try {
|
|
17
|
+
await indexManager.enableIndexing(index);
|
|
18
|
+
enabled.push(index);
|
|
19
|
+
} catch (ex) {
|
|
20
|
+
failed.push(index);
|
|
21
|
+
await this.controller.logger.error({
|
|
22
|
+
message: `Failed to enable indexing on index "${index}".`,
|
|
23
|
+
error: ex
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
return this.controller.response.done("Task done.", {
|
|
27
|
+
enabled,
|
|
28
|
+
failed
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
const EnableIndexingRunner_EnableIndexingRunner = EnableIndexingRunner.createImplementation({
|
|
33
|
+
implementation: EnableIndexingRunnerImpl,
|
|
34
|
+
dependencies: [
|
|
35
|
+
TaskController
|
|
36
|
+
]
|
|
37
|
+
});
|
|
38
|
+
export { EnableIndexingRunner_EnableIndexingRunner as EnableIndexingRunner };
|
|
39
|
+
|
|
40
|
+
//# sourceMappingURL=EnableIndexingRunner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tasks/enableIndexing/EnableIndexingRunner.js","sources":["../../../src/tasks/enableIndexing/EnableIndexingRunner.ts"],"sourcesContent":["import type { IIndexManager } from \"~/abstractions/IndexManager.js\";\nimport type { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport { TaskController } from \"@webiny/api-core/features/task/TaskController/index.js\";\nimport { EnableIndexingRunner as Abstraction } from \"./abstractions/EnableIndexingRunner.js\";\n\nclass EnableIndexingRunnerImpl implements Abstraction.Interface {\n constructor(private readonly controller: TaskController.Interface) {}\n\n public async execute(\n matching: string | undefined,\n indexManager: IIndexManager\n ): Promise<TaskDefinition.Result<Abstraction.Input>> {\n if (this.controller.runtime.isAborted()) {\n return this.controller.response.aborted();\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 indexes = await indexManager.list();\n const enabled: string[] = [];\n const failed: string[] = [];\n for (const index of indexes) {\n if (!isIndexAllowed(index)) {\n continue;\n }\n try {\n await indexManager.enableIndexing(index);\n enabled.push(index);\n } catch (ex) {\n failed.push(index);\n await this.controller.logger.error({\n message: `Failed to enable indexing on index \"${index}\".`,\n error: ex\n });\n }\n }\n return this.controller.response.done(\"Task done.\", {\n enabled,\n failed\n });\n }\n}\n\nexport const EnableIndexingRunner = Abstraction.createImplementation({\n implementation: EnableIndexingRunnerImpl,\n dependencies: [TaskController]\n});\n"],"names":["EnableIndexingRunnerImpl","controller","matching","indexManager","isIndexAllowed","index","indexes","enabled","failed","ex","EnableIndexingRunner","Abstraction","TaskController"],"mappings":";;AAKA,MAAMA;IACF,YAA6BC,UAAoC,CAAE;aAAtCA,UAAU,GAAVA;IAAuC;IAEpE,MAAa,QACTC,QAA4B,EAC5BC,YAA2B,EACsB;QACjD,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,IACjC,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO;QAG3C,MAAMC,iBAAiB,CAACC;YACpB,IAAI,AAAoB,YAApB,OAAOH,YAAyB,CAACA,UACjC,OAAO;YAEX,OAAOG,MAAM,QAAQ,CAACH;QAC1B;QAEA,MAAMI,UAAU,MAAMH,aAAa,IAAI;QACvC,MAAMI,UAAoB,EAAE;QAC5B,MAAMC,SAAmB,EAAE;QAC3B,KAAK,MAAMH,SAASC,QAChB,IAAKF,eAAeC,QAGpB,IAAI;YACA,MAAMF,aAAa,cAAc,CAACE;YAClCE,QAAQ,IAAI,CAACF;QACjB,EAAE,OAAOI,IAAI;YACTD,OAAO,IAAI,CAACH;YACZ,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC/B,SAAS,CAAC,oCAAoC,EAAEA,MAAM,EAAE,CAAC;gBACzD,OAAOI;YACX;QACJ;QAEJ,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc;YAC/CF;YACAC;QACJ;IACJ;AACJ;AAEO,MAAME,4CAAuBC,qBAAAA,oBAAgC,CAAC;IACjE,gBAAgBX;IAChB,cAAc;QAACY;KAAe;AAClC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { TaskDefinition } from "@webiny/api-core/features/task/TaskDefinition/index.js";
|
|
2
|
+
import { EnableIndexingRunner } from "./abstractions/EnableIndexingRunner.js";
|
|
3
|
+
import { IndexManagerFactory } from "../../abstractions/IndexManagerFactory.js";
|
|
4
|
+
declare class EnableIndexingTaskImpl implements TaskDefinition.Interface<EnableIndexingRunner.Input> {
|
|
5
|
+
private readonly indexManagerFactory;
|
|
6
|
+
private readonly runner;
|
|
7
|
+
readonly id = "elasticsearchEnableIndexing";
|
|
8
|
+
readonly title = "Enable Search Indexing";
|
|
9
|
+
readonly maxIterations = 2;
|
|
10
|
+
constructor(indexManagerFactory: IndexManagerFactory.Interface, runner: EnableIndexingRunner.Interface);
|
|
11
|
+
run({ input, controller }: TaskDefinition.RunParams<EnableIndexingRunner.Input>): Promise<TaskDefinition.Result<import("./abstractions/EnableIndexingRunner.js").IEnableIndexingInput, import("@webiny/api-core/features/task/TaskDefinition/abstractions.js").ITaskOutput>>;
|
|
12
|
+
}
|
|
13
|
+
export declare const EnableIndexingTask: typeof EnableIndexingTaskImpl & {
|
|
14
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/task/TaskDefinition/abstractions.js").ITaskDefinition<import("@webiny/api-core/features/task/TaskDefinition/abstractions.js").ITaskInput, import("@webiny/api-core/features/task/TaskDefinition/abstractions.js").ITaskOutput>>;
|
|
15
|
+
};
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { TaskDefinition } from "@webiny/api-core/features/task/TaskDefinition/index.js";
|
|
2
|
+
import { EnableIndexingRunner } from "./abstractions/EnableIndexingRunner.js";
|
|
3
|
+
import { IndexManagerFactory } from "../../abstractions/IndexManagerFactory.js";
|
|
4
|
+
class EnableIndexingTaskImpl {
|
|
5
|
+
constructor(indexManagerFactory, runner){
|
|
6
|
+
this.indexManagerFactory = indexManagerFactory;
|
|
7
|
+
this.runner = runner;
|
|
8
|
+
this.id = "elasticsearchEnableIndexing";
|
|
9
|
+
this.title = "Enable Search Indexing";
|
|
10
|
+
this.maxIterations = 2;
|
|
11
|
+
}
|
|
12
|
+
async run({ input, controller }) {
|
|
13
|
+
if (controller.runtime.isAborted()) return controller.response.aborted();
|
|
14
|
+
const indexManager = this.indexManagerFactory.createIndexManager({
|
|
15
|
+
settings: {},
|
|
16
|
+
defaults: {
|
|
17
|
+
refreshInterval: input.refreshInterval,
|
|
18
|
+
numberOfReplicas: input.numberOfReplicas
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
return this.runner.execute(input.matching, indexManager);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
const EnableIndexingTask = TaskDefinition.createImplementation({
|
|
25
|
+
implementation: EnableIndexingTaskImpl,
|
|
26
|
+
dependencies: [
|
|
27
|
+
IndexManagerFactory,
|
|
28
|
+
EnableIndexingRunner
|
|
29
|
+
]
|
|
30
|
+
});
|
|
31
|
+
export { EnableIndexingTask };
|
|
32
|
+
|
|
33
|
+
//# sourceMappingURL=EnableIndexingTask.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tasks/enableIndexing/EnableIndexingTask.js","sources":["../../../src/tasks/enableIndexing/EnableIndexingTask.ts"],"sourcesContent":["import { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport { EnableIndexingRunner } from \"./abstractions/EnableIndexingRunner.js\";\nimport { IndexManagerFactory } from \"~/abstractions/IndexManagerFactory.js\";\n\nclass EnableIndexingTaskImpl implements TaskDefinition.Interface<EnableIndexingRunner.Input> {\n public readonly id = \"elasticsearchEnableIndexing\";\n public readonly title = \"Enable Search Indexing\";\n public readonly maxIterations = 2;\n\n constructor(\n private readonly indexManagerFactory: IndexManagerFactory.Interface,\n private readonly runner: EnableIndexingRunner.Interface\n ) {}\n\n async run({ input, controller }: TaskDefinition.RunParams<EnableIndexingRunner.Input>) {\n if (controller.runtime.isAborted()) {\n return controller.response.aborted();\n }\n\n const indexManager = this.indexManagerFactory.createIndexManager({\n settings: {},\n defaults: {\n refreshInterval: input.refreshInterval,\n numberOfReplicas: input.numberOfReplicas\n }\n });\n\n return this.runner.execute(input.matching, indexManager);\n }\n}\n\nexport const EnableIndexingTask = TaskDefinition.createImplementation({\n implementation: EnableIndexingTaskImpl,\n dependencies: [IndexManagerFactory, EnableIndexingRunner]\n});\n"],"names":["EnableIndexingTaskImpl","indexManagerFactory","runner","input","controller","indexManager","EnableIndexingTask","TaskDefinition","IndexManagerFactory","EnableIndexingRunner"],"mappings":";;;AAIA,MAAMA;IAKF,YACqBC,mBAAkD,EAClDC,MAAsC,CACzD;aAFmBD,mBAAmB,GAAnBA;aACAC,MAAM,GAANA;aANL,EAAE,GAAG;aACL,KAAK,GAAG;aACR,aAAa,GAAG;IAK7B;IAEH,MAAM,IAAI,EAAEC,KAAK,EAAEC,UAAU,EAAwD,EAAE;QACnF,IAAIA,WAAW,OAAO,CAAC,SAAS,IAC5B,OAAOA,WAAW,QAAQ,CAAC,OAAO;QAGtC,MAAMC,eAAe,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC;YAC7D,UAAU,CAAC;YACX,UAAU;gBACN,iBAAiBF,MAAM,eAAe;gBACtC,kBAAkBA,MAAM,gBAAgB;YAC5C;QACJ;QAEA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAACA,MAAM,QAAQ,EAAEE;IAC/C;AACJ;AAEO,MAAMC,qBAAqBC,eAAe,oBAAoB,CAAC;IAClE,gBAAgBP;IAChB,cAAc;QAACQ;QAAqBC;KAAqB;AAC7D"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { IIndexManager } from "../../../abstractions/IndexManager.js";
|
|
2
|
+
import type { TaskDefinition } from "@webiny/api-core/features/task/TaskDefinition/index.js";
|
|
3
|
+
export interface IEnableIndexingInput {
|
|
4
|
+
matching?: string;
|
|
5
|
+
numberOfReplicas?: number;
|
|
6
|
+
refreshInterval?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface IEnableIndexingRunner {
|
|
9
|
+
execute(matching: string | undefined, indexManager: IIndexManager): Promise<TaskDefinition.Result<IEnableIndexingInput>>;
|
|
10
|
+
}
|
|
11
|
+
export declare const EnableIndexingRunner: import("@webiny/di").Abstraction<IEnableIndexingRunner>;
|
|
12
|
+
export declare namespace EnableIndexingRunner {
|
|
13
|
+
type Interface = IEnableIndexingRunner;
|
|
14
|
+
type Input = IEnableIndexingInput;
|
|
15
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tasks/enableIndexing/abstractions/EnableIndexingRunner.js","sources":["../../../../src/tasks/enableIndexing/abstractions/EnableIndexingRunner.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { IIndexManager } from \"~/abstractions/IndexManager.js\";\nimport type { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\n\nexport interface IEnableIndexingInput {\n matching?: string;\n numberOfReplicas?: number;\n refreshInterval?: string;\n}\n\nexport interface IEnableIndexingRunner {\n execute(\n matching: string | undefined,\n indexManager: IIndexManager\n ): Promise<TaskDefinition.Result<IEnableIndexingInput>>;\n}\n\nexport const EnableIndexingRunner = createAbstraction<IEnableIndexingRunner>(\n \"SearchIndexTasks/EnableIndexingRunner\"\n);\n\nexport namespace EnableIndexingRunner {\n export type Interface = IEnableIndexingRunner;\n export type Input = IEnableIndexingInput;\n}\n"],"names":["EnableIndexingRunner","createAbstraction"],"mappings":";AAiBO,MAAMA,uBAAuBC,kBAChC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { IIndexManager } from "../../abstractions/IndexManager.js";
|
|
2
|
+
import type { TaskDefinition } from "@webiny/api-core/features/task/TaskDefinition/index.js";
|
|
3
|
+
import { TaskController } from "@webiny/api-core/features/task/TaskController/index.js";
|
|
4
|
+
import { TenantContext } from "@webiny/api-core/features/tenancy/TenantContext/index.js";
|
|
5
|
+
import { ListTenantsUseCase } from "@webiny/api-core/features/tenancy/ListTenants/index.js";
|
|
6
|
+
import { StorageScanner } from "../../abstractions/StorageScanner.js";
|
|
7
|
+
import { StorageWriter } from "../../abstractions/StorageWriter.js";
|
|
8
|
+
import { TenantIndexFactory } from "../../abstractions/TenantIndexFactory.js";
|
|
9
|
+
import { ReindexRunner as Abstraction } from "./abstractions/ReindexRunner.js";
|
|
10
|
+
declare class ReindexRunnerImpl implements Abstraction.Interface {
|
|
11
|
+
private readonly controller;
|
|
12
|
+
private readonly scanner;
|
|
13
|
+
private readonly writer;
|
|
14
|
+
private readonly tenantContext;
|
|
15
|
+
private readonly listTenantsUseCase;
|
|
16
|
+
private readonly indexFactories;
|
|
17
|
+
constructor(controller: TaskController.Interface, scanner: StorageScanner.Interface, writer: StorageWriter.Interface, tenantContext: TenantContext.Interface, listTenantsUseCase: ListTenantsUseCase.Interface, indexFactories: TenantIndexFactory.Interface[]);
|
|
18
|
+
execute(cursor: string | undefined, limit: number, indexManager: IIndexManager): Promise<TaskDefinition.Result<Abstraction.Input>>;
|
|
19
|
+
private buildIndexConfigs;
|
|
20
|
+
}
|
|
21
|
+
export declare const ReindexRunner: typeof ReindexRunnerImpl & {
|
|
22
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions/ReindexRunner.js").IReindexRunner>;
|
|
23
|
+
};
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { TaskController } from "@webiny/api-core/features/task/TaskController/index.js";
|
|
2
|
+
import { TenantContext } from "@webiny/api-core/features/tenancy/TenantContext/index.js";
|
|
3
|
+
import { ListTenantsUseCase } from "@webiny/api-core/features/tenancy/ListTenants/index.js";
|
|
4
|
+
import { StorageScanner } from "../../abstractions/StorageScanner.js";
|
|
5
|
+
import { StorageWriter } from "../../abstractions/StorageWriter.js";
|
|
6
|
+
import { TenantIndexFactory } from "../../abstractions/TenantIndexFactory.js";
|
|
7
|
+
import { ReindexRunner } from "./abstractions/ReindexRunner.js";
|
|
8
|
+
class ReindexRunnerImpl {
|
|
9
|
+
constructor(controller, scanner, writer, tenantContext, listTenantsUseCase, indexFactories){
|
|
10
|
+
this.controller = controller;
|
|
11
|
+
this.scanner = scanner;
|
|
12
|
+
this.writer = writer;
|
|
13
|
+
this.tenantContext = tenantContext;
|
|
14
|
+
this.listTenantsUseCase = listTenantsUseCase;
|
|
15
|
+
this.indexFactories = indexFactories;
|
|
16
|
+
}
|
|
17
|
+
async execute(cursor, limit, indexManager) {
|
|
18
|
+
const isIndexAllowed = (index)=>{
|
|
19
|
+
const input = this.controller.state.getInput();
|
|
20
|
+
if ("string" != typeof input.matching || !input.matching) return true;
|
|
21
|
+
return index.includes(input.matching);
|
|
22
|
+
};
|
|
23
|
+
const indexConfigs = await this.buildIndexConfigs();
|
|
24
|
+
try {
|
|
25
|
+
while(false === this.controller.runtime.isCloseToTimeout()){
|
|
26
|
+
if (this.controller.runtime.isAborted()) return this.controller.response.aborted();
|
|
27
|
+
const results = await this.scanner.scan(cursor, limit);
|
|
28
|
+
if (0 === results.items.length) {
|
|
29
|
+
await indexManager.enableIndexing();
|
|
30
|
+
return this.controller.response.done("No more items to process.");
|
|
31
|
+
}
|
|
32
|
+
for (const item of results.items){
|
|
33
|
+
if (!item.index) continue;
|
|
34
|
+
if (false === isIndexAllowed(item.index)) continue;
|
|
35
|
+
if (!item.entity) continue;
|
|
36
|
+
const exists = await indexManager.indexExists(item.index);
|
|
37
|
+
if (!exists) {
|
|
38
|
+
const config = indexConfigs[item.index];
|
|
39
|
+
if (!config) {
|
|
40
|
+
await this.controller.logger.info({
|
|
41
|
+
message: `Index "${item.index}" does not exist and no configuration found. Skipping.`
|
|
42
|
+
});
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
await indexManager.createIndex(item.index, config.settings);
|
|
46
|
+
await this.controller.logger.info({
|
|
47
|
+
message: `Index "${item.index}" created.`
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
await indexManager.disableIndexing(item.index);
|
|
51
|
+
this.writer.put({
|
|
52
|
+
entity: item.entity,
|
|
53
|
+
data: {
|
|
54
|
+
...item.data,
|
|
55
|
+
modified: new Date().toISOString()
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
await this.writer.execute();
|
|
60
|
+
cursor = results.cursor;
|
|
61
|
+
await this.controller.state.updateInput({
|
|
62
|
+
settings: indexManager.settings,
|
|
63
|
+
cursor
|
|
64
|
+
});
|
|
65
|
+
if (!cursor) {
|
|
66
|
+
await indexManager.enableIndexing();
|
|
67
|
+
return this.controller.response.done("No more items to process - no last evaluated keys.");
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return this.controller.response.continue({
|
|
71
|
+
cursor
|
|
72
|
+
});
|
|
73
|
+
} catch (ex) {
|
|
74
|
+
try {
|
|
75
|
+
await indexManager.enableIndexing();
|
|
76
|
+
} catch (er) {
|
|
77
|
+
er.data = ex;
|
|
78
|
+
return this.controller.response.error(er);
|
|
79
|
+
}
|
|
80
|
+
return this.controller.response.error(ex);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
async buildIndexConfigs() {
|
|
84
|
+
const configs = {};
|
|
85
|
+
const tenantsResult = await this.listTenantsUseCase.execute();
|
|
86
|
+
const tenants = tenantsResult.value;
|
|
87
|
+
await this.tenantContext.withEachTenant(tenants, async (tenant)=>{
|
|
88
|
+
for (const factory of this.indexFactories){
|
|
89
|
+
const results = await factory.getIndexList(tenant);
|
|
90
|
+
for (const result of results)if (!configs[result.index]) configs[result.index] = result;
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
return configs;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
const ReindexRunner_ReindexRunner = ReindexRunner.createImplementation({
|
|
97
|
+
implementation: ReindexRunnerImpl,
|
|
98
|
+
dependencies: [
|
|
99
|
+
TaskController,
|
|
100
|
+
StorageScanner,
|
|
101
|
+
StorageWriter,
|
|
102
|
+
TenantContext,
|
|
103
|
+
ListTenantsUseCase,
|
|
104
|
+
[
|
|
105
|
+
TenantIndexFactory,
|
|
106
|
+
{
|
|
107
|
+
multiple: true
|
|
108
|
+
}
|
|
109
|
+
]
|
|
110
|
+
]
|
|
111
|
+
});
|
|
112
|
+
export { ReindexRunner_ReindexRunner as ReindexRunner };
|
|
113
|
+
|
|
114
|
+
//# sourceMappingURL=ReindexRunner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tasks/reindex/ReindexRunner.js","sources":["../../../src/tasks/reindex/ReindexRunner.ts"],"sourcesContent":["import type { IIndexManager } from \"~/abstractions/IndexManager.js\";\nimport type { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport { TaskController } from \"@webiny/api-core/features/task/TaskController/index.js\";\nimport { TenantContext } from \"@webiny/api-core/features/tenancy/TenantContext/index.js\";\nimport { ListTenantsUseCase } from \"@webiny/api-core/features/tenancy/ListTenants/index.js\";\nimport { StorageScanner } from \"~/abstractions/StorageScanner.js\";\nimport { StorageWriter } from \"~/abstractions/StorageWriter.js\";\nimport { TenantIndexFactory } from \"~/abstractions/TenantIndexFactory.js\";\nimport { ReindexRunner as Abstraction } from \"./abstractions/ReindexRunner.js\";\n\nclass ReindexRunnerImpl implements Abstraction.Interface {\n constructor(\n private readonly controller: TaskController.Interface,\n private readonly scanner: StorageScanner.Interface,\n private readonly writer: StorageWriter.Interface,\n private readonly tenantContext: TenantContext.Interface,\n private readonly listTenantsUseCase: ListTenantsUseCase.Interface,\n private readonly indexFactories: TenantIndexFactory.Interface[]\n ) {}\n\n public async execute(\n cursor: string | undefined,\n limit: number,\n indexManager: IIndexManager\n ): Promise<TaskDefinition.Result<Abstraction.Input>> {\n const isIndexAllowed = (index: string): boolean => {\n const input = this.controller.state.getInput();\n if (typeof input.matching !== \"string\" || !input.matching) {\n return true;\n }\n return index.includes(input.matching);\n };\n\n const indexConfigs = await this.buildIndexConfigs();\n\n try {\n while (this.controller.runtime.isCloseToTimeout() === false) {\n if (this.controller.runtime.isAborted()) {\n return this.controller.response.aborted();\n }\n\n const results = await this.scanner.scan(cursor, limit);\n if (results.items.length === 0) {\n await indexManager.enableIndexing();\n return this.controller.response.done(\"No more items to process.\");\n }\n\n for (const item of results.items) {\n if (!item.index) {\n continue;\n }\n if (isIndexAllowed(item.index) === false) {\n continue;\n }\n if (!item.entity) {\n continue;\n }\n\n const exists = await indexManager.indexExists(item.index);\n if (!exists) {\n const config = indexConfigs[item.index];\n if (!config) {\n await this.controller.logger.info({\n message: `Index \"${item.index}\" does not exist and no configuration found. Skipping.`\n });\n continue;\n }\n await indexManager.createIndex(item.index, config.settings);\n await this.controller.logger.info({\n message: `Index \"${item.index}\" created.`\n });\n }\n\n await indexManager.disableIndexing(item.index);\n this.writer.put({\n entity: item.entity,\n data: {\n ...item.data,\n modified: new Date().toISOString()\n }\n });\n }\n await this.writer.execute();\n cursor = results.cursor;\n await this.controller.state.updateInput({\n settings: indexManager.settings,\n cursor\n });\n if (!cursor) {\n await indexManager.enableIndexing();\n return this.controller.response.done(\n \"No more items to process - no last evaluated keys.\"\n );\n }\n }\n return this.controller.response.continue({\n cursor\n });\n } catch (ex) {\n try {\n await indexManager.enableIndexing();\n } catch (er) {\n er.data = ex;\n return this.controller.response.error(er);\n }\n return this.controller.response.error(ex);\n }\n }\n\n private async buildIndexConfigs(): Promise<Abstraction.IndexConfigsMap> {\n const configs: Abstraction.IndexConfigsMap = {};\n const tenantsResult = await this.listTenantsUseCase.execute();\n const tenants = tenantsResult.value;\n\n await this.tenantContext.withEachTenant(tenants, async tenant => {\n for (const factory of this.indexFactories) {\n const results = await factory.getIndexList(tenant);\n for (const result of results) {\n if (!configs[result.index]) {\n configs[result.index] = result;\n }\n }\n }\n });\n\n return configs;\n }\n}\n\nexport const ReindexRunner = Abstraction.createImplementation({\n implementation: ReindexRunnerImpl,\n dependencies: [\n TaskController,\n StorageScanner,\n StorageWriter,\n TenantContext,\n ListTenantsUseCase,\n [TenantIndexFactory, { multiple: true }]\n ]\n});\n"],"names":["ReindexRunnerImpl","controller","scanner","writer","tenantContext","listTenantsUseCase","indexFactories","cursor","limit","indexManager","isIndexAllowed","index","input","indexConfigs","results","item","exists","config","Date","ex","er","configs","tenantsResult","tenants","tenant","factory","result","ReindexRunner","Abstraction","TaskController","StorageScanner","StorageWriter","TenantContext","ListTenantsUseCase","TenantIndexFactory"],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { TaskDefinition } from "@webiny/api-core/features/task/TaskDefinition/index.js";
|
|
2
|
+
import { ReindexRunner } from "./abstractions/ReindexRunner.js";
|
|
3
|
+
import { IndexManagerFactory } from "../../abstractions/IndexManagerFactory.js";
|
|
4
|
+
declare class ReindexTaskImpl implements TaskDefinition.Interface<ReindexRunner.Input> {
|
|
5
|
+
private readonly indexManagerFactory;
|
|
6
|
+
private readonly runner;
|
|
7
|
+
readonly id = "elasticsearchReindexing";
|
|
8
|
+
readonly title = "Reindex Search Index";
|
|
9
|
+
readonly maxIterations = 500;
|
|
10
|
+
constructor(indexManagerFactory: IndexManagerFactory.Interface, runner: ReindexRunner.Interface);
|
|
11
|
+
run({ input, controller }: TaskDefinition.RunParams<ReindexRunner.Input>): Promise<TaskDefinition.Result<import("./abstractions/ReindexRunner.js").IReindexInput, import("@webiny/api-core/features/task/TaskDefinition/abstractions.js").ITaskOutput>>;
|
|
12
|
+
}
|
|
13
|
+
export declare const ReindexTask: typeof ReindexTaskImpl & {
|
|
14
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/task/TaskDefinition/abstractions.js").ITaskDefinition<import("@webiny/api-core/features/task/TaskDefinition/abstractions.js").ITaskInput, import("@webiny/api-core/features/task/TaskDefinition/abstractions.js").ITaskOutput>>;
|
|
15
|
+
};
|
|
16
|
+
export {};
|