@webiny/api-search-index-tasks 0.0.0-unstable.0156a4c312
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 +73 -0
- package/tasks/createIndexes/CreateIndexesRunner.js.map +1 -0
- package/tasks/createIndexes/CreateIndexesTask.d.ts +24 -0
- package/tasks/createIndexes/CreateIndexesTask.js +49 -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 +21 -0
- package/tasks/enableIndexing/EnableIndexingTask.js +42 -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 +115 -0
- package/tasks/reindex/ReindexRunner.js.map +1 -0
- package/tasks/reindex/ReindexTask.d.ts +21 -0
- package/tasks/reindex/ReindexTask.js +39 -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
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) Webiny
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# @webiny/api-search-index-tasks
|
|
2
|
+
|
|
3
|
+
> [!NOTE]
|
|
4
|
+
> This package is part of the [Webiny](https://www.webiny.com) monorepo.
|
|
5
|
+
> It’s **included in every Webiny project by default** and is not meant to be used as a standalone package.
|
|
6
|
+
|
|
7
|
+
📘 **Documentation:** [https://www.webiny.com/docs](https://www.webiny.com/docs)
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
_This README file is automatically generated during the publish process._
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { GenericRecord } from "@webiny/api/types.js";
|
|
2
|
+
export interface IIndexSettings {
|
|
3
|
+
numberOfReplicas: number;
|
|
4
|
+
refreshInterval: string;
|
|
5
|
+
}
|
|
6
|
+
export interface IIndexSettingsMap {
|
|
7
|
+
[index: string]: IIndexSettings;
|
|
8
|
+
}
|
|
9
|
+
export interface IIndexManager {
|
|
10
|
+
list(): Promise<string[]>;
|
|
11
|
+
indexExists(index: string): Promise<boolean>;
|
|
12
|
+
createIndex(index: string, settings?: GenericRecord): Promise<void>;
|
|
13
|
+
disableIndexing(index: string): Promise<IIndexSettings>;
|
|
14
|
+
enableIndexing(index?: string): Promise<void>;
|
|
15
|
+
settings: IIndexSettingsMap;
|
|
16
|
+
}
|
|
17
|
+
export declare const IndexManager: import("@webiny/di").Abstraction<IIndexManager>;
|
|
18
|
+
export declare namespace IndexManager {
|
|
19
|
+
type Interface = IIndexManager;
|
|
20
|
+
type Settings = IIndexSettings;
|
|
21
|
+
type SettingsMap = IIndexSettingsMap;
|
|
22
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abstractions/IndexManager.js","sources":["../../src/abstractions/IndexManager.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { GenericRecord } from \"@webiny/api/types.js\";\n\nexport interface IIndexSettings {\n numberOfReplicas: number;\n refreshInterval: string;\n}\n\nexport interface IIndexSettingsMap {\n [index: string]: IIndexSettings;\n}\n\nexport interface IIndexManager {\n list(): Promise<string[]>;\n indexExists(index: string): Promise<boolean>;\n createIndex(index: string, settings?: GenericRecord): Promise<void>;\n disableIndexing(index: string): Promise<IIndexSettings>;\n enableIndexing(index?: string): Promise<void>;\n settings: IIndexSettingsMap;\n}\n\nexport const IndexManager = createAbstraction<IIndexManager>(\"SearchIndexTasks/IndexManager\");\n\nexport namespace IndexManager {\n export type Interface = IIndexManager;\n export type Settings = IIndexSettings;\n export type SettingsMap = IIndexSettingsMap;\n}\n"],"names":["IndexManager","createAbstraction"],"mappings":";AAqBO,MAAMA,eAAeC,kBAAiC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { IIndexManager, IIndexSettings, IIndexSettingsMap } from "./IndexManager.js";
|
|
2
|
+
export interface IIndexManagerFactoryParams {
|
|
3
|
+
settings: IIndexSettingsMap;
|
|
4
|
+
defaults?: Partial<IIndexSettings>;
|
|
5
|
+
}
|
|
6
|
+
export interface IIndexManagerFactory {
|
|
7
|
+
createIndexManager(params: IIndexManagerFactoryParams): IIndexManager;
|
|
8
|
+
}
|
|
9
|
+
export declare const IndexManagerFactory: import("@webiny/di").Abstraction<IIndexManagerFactory>;
|
|
10
|
+
export declare namespace IndexManagerFactory {
|
|
11
|
+
type Interface = IIndexManagerFactory;
|
|
12
|
+
type Params = IIndexManagerFactoryParams;
|
|
13
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abstractions/IndexManagerFactory.js","sources":["../../src/abstractions/IndexManagerFactory.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { IIndexManager, IIndexSettings, IIndexSettingsMap } from \"./IndexManager.js\";\n\nexport interface IIndexManagerFactoryParams {\n settings: IIndexSettingsMap;\n defaults?: Partial<IIndexSettings>;\n}\n\nexport interface IIndexManagerFactory {\n createIndexManager(params: IIndexManagerFactoryParams): IIndexManager;\n}\n\nexport const IndexManagerFactory = createAbstraction<IIndexManagerFactory>(\n \"SearchIndexTasks/IndexManagerFactory\"\n);\n\nexport namespace IndexManagerFactory {\n export type Interface = IIndexManagerFactory;\n export type Params = IIndexManagerFactoryParams;\n}\n"],"names":["IndexManagerFactory","createAbstraction"],"mappings":";AAYO,MAAMA,sBAAsBC,kBAC/B"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { IIndexSettings } from "./IndexManager.js";
|
|
2
|
+
export interface IIndexSettingsManager {
|
|
3
|
+
getSettings(index: string): Promise<IIndexSettings>;
|
|
4
|
+
setSettings(index: string, settings: IIndexSettings): Promise<void>;
|
|
5
|
+
}
|
|
6
|
+
export declare const IndexSettingsManager: import("@webiny/di").Abstraction<IIndexSettingsManager>;
|
|
7
|
+
export declare namespace IndexSettingsManager {
|
|
8
|
+
type Interface = IIndexSettingsManager;
|
|
9
|
+
type Settings = IIndexSettings;
|
|
10
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abstractions/IndexSettingsManager.js","sources":["../../src/abstractions/IndexSettingsManager.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { IIndexSettings } from \"./IndexManager.js\";\n\nexport interface IIndexSettingsManager {\n getSettings(index: string): Promise<IIndexSettings>;\n setSettings(index: string, settings: IIndexSettings): Promise<void>;\n}\n\nexport const IndexSettingsManager = createAbstraction<IIndexSettingsManager>(\n \"SearchIndexTasks/IndexSettingsManager\"\n);\n\nexport namespace IndexSettingsManager {\n export type Interface = IIndexSettingsManager;\n export type Settings = IIndexSettings;\n}\n"],"names":["IndexSettingsManager","createAbstraction"],"mappings":";AAQO,MAAMA,uBAAuBC,kBAChC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { GenericRecord } from "@webiny/api/types.js";
|
|
2
|
+
export interface IStorageScannerRecord {
|
|
3
|
+
index: string;
|
|
4
|
+
entity: string;
|
|
5
|
+
data: GenericRecord;
|
|
6
|
+
modified: string;
|
|
7
|
+
}
|
|
8
|
+
export interface IStorageScannerResult {
|
|
9
|
+
items: IStorageScannerRecord[];
|
|
10
|
+
cursor?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface IStorageScanner {
|
|
13
|
+
scan(cursor: string | undefined, limit: number): Promise<IStorageScannerResult>;
|
|
14
|
+
}
|
|
15
|
+
export declare const StorageScanner: import("@webiny/di").Abstraction<IStorageScanner>;
|
|
16
|
+
export declare namespace StorageScanner {
|
|
17
|
+
type Interface = IStorageScanner;
|
|
18
|
+
type Record = IStorageScannerRecord;
|
|
19
|
+
type Result = IStorageScannerResult;
|
|
20
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abstractions/StorageScanner.js","sources":["../../src/abstractions/StorageScanner.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { GenericRecord } from \"@webiny/api/types.js\";\n\nexport interface IStorageScannerRecord {\n index: string;\n entity: string;\n data: GenericRecord;\n modified: string;\n}\n\nexport interface IStorageScannerResult {\n items: IStorageScannerRecord[];\n cursor?: string;\n}\n\nexport interface IStorageScanner {\n scan(cursor: string | undefined, limit: number): Promise<IStorageScannerResult>;\n}\n\nexport const StorageScanner = createAbstraction<IStorageScanner>(\"SearchIndexTasks/StorageScanner\");\n\nexport namespace StorageScanner {\n export type Interface = IStorageScanner;\n export type Record = IStorageScannerRecord;\n export type Result = IStorageScannerResult;\n}\n"],"names":["StorageScanner","createAbstraction"],"mappings":";AAmBO,MAAMA,iBAAiBC,kBAAmC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { GenericRecord } from "@webiny/api/types.js";
|
|
2
|
+
export interface IStorageWriterRecord {
|
|
3
|
+
entity: string;
|
|
4
|
+
data: GenericRecord;
|
|
5
|
+
}
|
|
6
|
+
export interface IStorageWriter {
|
|
7
|
+
put(record: IStorageWriterRecord): void;
|
|
8
|
+
execute(): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
export declare const StorageWriter: import("@webiny/di").Abstraction<IStorageWriter>;
|
|
11
|
+
export declare namespace StorageWriter {
|
|
12
|
+
type Interface = IStorageWriter;
|
|
13
|
+
type Record = IStorageWriterRecord;
|
|
14
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abstractions/StorageWriter.js","sources":["../../src/abstractions/StorageWriter.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { GenericRecord } from \"@webiny/api/types.js\";\n\nexport interface IStorageWriterRecord {\n entity: string;\n data: GenericRecord;\n}\n\nexport interface IStorageWriter {\n put(record: IStorageWriterRecord): void;\n execute(): Promise<void>;\n}\n\nexport const StorageWriter = createAbstraction<IStorageWriter>(\"SearchIndexTasks/StorageWriter\");\n\nexport namespace StorageWriter {\n export type Interface = IStorageWriter;\n export type Record = IStorageWriterRecord;\n}\n"],"names":["StorageWriter","createAbstraction"],"mappings":";AAaO,MAAMA,gBAAgBC,kBAAkC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { GenericRecord } from "@webiny/api/types.js";
|
|
2
|
+
import type { Tenant as BaseTenant } from "@webiny/api-core/types/tenancy.js";
|
|
3
|
+
export interface ITenantIndexConfig {
|
|
4
|
+
index: string;
|
|
5
|
+
settings?: GenericRecord;
|
|
6
|
+
}
|
|
7
|
+
export type ITenant = Pick<BaseTenant, "id">;
|
|
8
|
+
export interface ITenantIndexFactory {
|
|
9
|
+
getIndexList(tenant: ITenant): Promise<ITenantIndexConfig[]>;
|
|
10
|
+
}
|
|
11
|
+
export declare const TenantIndexFactory: import("@webiny/di").Abstraction<ITenantIndexFactory>;
|
|
12
|
+
export declare namespace TenantIndexFactory {
|
|
13
|
+
type Interface = ITenantIndexFactory;
|
|
14
|
+
type IndexConfig = ITenantIndexConfig;
|
|
15
|
+
type Tenant = ITenant;
|
|
16
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abstractions/TenantIndexFactory.js","sources":["../../src/abstractions/TenantIndexFactory.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { GenericRecord } from \"@webiny/api/types.js\";\nimport type { Tenant as BaseTenant } from \"@webiny/api-core/types/tenancy.js\";\n\nexport interface ITenantIndexConfig {\n index: string;\n settings?: GenericRecord;\n}\n\nexport type ITenant = Pick<BaseTenant, \"id\">;\n\nexport interface ITenantIndexFactory {\n getIndexList(tenant: ITenant): Promise<ITenantIndexConfig[]>;\n}\n\nexport const TenantIndexFactory = createAbstraction<ITenantIndexFactory>(\n \"SearchIndexTenantIndexFactory\"\n);\n\nexport namespace TenantIndexFactory {\n export type Interface = ITenantIndexFactory;\n export type IndexConfig = ITenantIndexConfig;\n export type Tenant = ITenant;\n}\n"],"names":["TenantIndexFactory","createAbstraction"],"mappings":";AAeO,MAAMA,qBAAqBC,kBAC9B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors/IndexingDisableError.js","sources":["../../src/errors/IndexingDisableError.ts"],"sourcesContent":["export class IndexingDisableError extends Error {}\n"],"names":["IndexingDisableError","Error"],"mappings":"AAAO,MAAMA,6BAA6BC;AAAO"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors/IndexingEnableError.js","sources":["../../src/errors/IndexingEnableError.ts"],"sourcesContent":["export class IndexingEnableError extends Error {}\n"],"names":["IndexingEnableError","Error"],"mappings":"AAAO,MAAMA,4BAA4BC;AAAO"}
|
package/feature.d.ts
ADDED
package/feature.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/api";
|
|
2
|
+
import { DisableIndexing } from "./settings/DisableIndexing.js";
|
|
3
|
+
import { EnableIndexing } from "./settings/EnableIndexing.js";
|
|
4
|
+
import { ReindexRunner } from "./tasks/reindex/ReindexRunner.js";
|
|
5
|
+
import { ReindexTask } from "./tasks/reindex/ReindexTask.js";
|
|
6
|
+
import { EnableIndexingRunner } from "./tasks/enableIndexing/EnableIndexingRunner.js";
|
|
7
|
+
import { EnableIndexingTask } from "./tasks/enableIndexing/EnableIndexingTask.js";
|
|
8
|
+
import { CreateIndexesRunner } from "./tasks/createIndexes/CreateIndexesRunner.js";
|
|
9
|
+
import { OnBeforeTrigger } from "./tasks/createIndexes/OnBeforeTrigger.js";
|
|
10
|
+
import { CreateIndexesTask } from "./tasks/createIndexes/CreateIndexesTask.js";
|
|
11
|
+
const SearchIndexTasksFeature = createFeature({
|
|
12
|
+
name: "SearchIndexTasks",
|
|
13
|
+
register (container) {
|
|
14
|
+
container.register(DisableIndexing);
|
|
15
|
+
container.register(EnableIndexing);
|
|
16
|
+
container.register(ReindexRunner);
|
|
17
|
+
container.register(ReindexTask);
|
|
18
|
+
container.register(EnableIndexingRunner);
|
|
19
|
+
container.register(EnableIndexingTask);
|
|
20
|
+
container.register(CreateIndexesRunner);
|
|
21
|
+
container.register(OnBeforeTrigger);
|
|
22
|
+
container.register(CreateIndexesTask);
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
export { SearchIndexTasksFeature };
|
|
26
|
+
|
|
27
|
+
//# sourceMappingURL=feature.js.map
|
package/feature.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature.js","sources":["../src/feature.ts"],"sourcesContent":["import { type Container, createFeature } from \"@webiny/feature/api\";\nimport { DisableIndexing } from \"~/settings/DisableIndexing.js\";\nimport { EnableIndexing } from \"~/settings/EnableIndexing.js\";\nimport { ReindexRunner } from \"~/tasks/reindex/ReindexRunner.js\";\nimport { ReindexTask } from \"~/tasks/reindex/ReindexTask.js\";\nimport { EnableIndexingRunner } from \"~/tasks/enableIndexing/EnableIndexingRunner.js\";\nimport { EnableIndexingTask } from \"~/tasks/enableIndexing/EnableIndexingTask.js\";\nimport { CreateIndexesRunner } from \"~/tasks/createIndexes/CreateIndexesRunner.js\";\nimport { OnBeforeTrigger } from \"~/tasks/createIndexes/OnBeforeTrigger.js\";\nimport { CreateIndexesTask } from \"~/tasks/createIndexes/CreateIndexesTask.js\";\n\nexport const SearchIndexTasksFeature = createFeature({\n name: \"SearchIndexTasks\",\n register(container: Container) {\n container.register(DisableIndexing);\n container.register(EnableIndexing);\n container.register(ReindexRunner);\n container.register(ReindexTask);\n container.register(EnableIndexingRunner);\n container.register(EnableIndexingTask);\n container.register(CreateIndexesRunner);\n container.register(OnBeforeTrigger);\n container.register(CreateIndexesTask);\n }\n});\n"],"names":["SearchIndexTasksFeature","createFeature","container","DisableIndexing","EnableIndexing","ReindexRunner","ReindexTask","EnableIndexingRunner","EnableIndexingTask","CreateIndexesRunner","OnBeforeTrigger","CreateIndexesTask"],"mappings":";;;;;;;;;;AAWO,MAAMA,0BAA0BC,cAAc;IACjD,MAAM;IACN,UAASC,SAAoB;QACzBA,UAAU,QAAQ,CAACC;QACnBD,UAAU,QAAQ,CAACE;QACnBF,UAAU,QAAQ,CAACG;QACnBH,UAAU,QAAQ,CAACI;QACnBJ,UAAU,QAAQ,CAACK;QACnBL,UAAU,QAAQ,CAACM;QACnBN,UAAU,QAAQ,CAACO;QACnBP,UAAU,QAAQ,CAACQ;QACnBR,UAAU,QAAQ,CAACS;IACvB;AACJ"}
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import "@webiny/background-tasks/api/features/TaskController/index.js";
|
|
2
|
+
export { StorageScanner } from "./abstractions/StorageScanner.js";
|
|
3
|
+
export { IndexManager } from "./abstractions/IndexManager.js";
|
|
4
|
+
export { StorageWriter } from "./abstractions/StorageWriter.js";
|
|
5
|
+
export { IndexManagerFactory } from "./abstractions/IndexManagerFactory.js";
|
|
6
|
+
export { IndexSettingsManager } from "./abstractions/IndexSettingsManager.js";
|
|
7
|
+
export { DisableIndexing } from "./settings/abstractions/DisableIndexing.js";
|
|
8
|
+
export { EnableIndexing } from "./settings/abstractions/EnableIndexing.js";
|
|
9
|
+
export { DisableIndexing as DisableIndexingImpl } from "./settings/DisableIndexing.js";
|
|
10
|
+
export { EnableIndexing as EnableIndexingImpl } from "./settings/EnableIndexing.js";
|
|
11
|
+
export { EnableIndexingRunner } from "./tasks/enableIndexing/abstractions/EnableIndexingRunner.js";
|
|
12
|
+
export { EnableIndexingRunner as EnableIndexingRunnerImpl } from "./tasks/enableIndexing/EnableIndexingRunner.js";
|
|
13
|
+
export { EnableIndexingTask } from "./tasks/enableIndexing/EnableIndexingTask.js";
|
|
14
|
+
export { TenantIndexFactory } from "./abstractions/TenantIndexFactory.js";
|
|
15
|
+
export { CreateIndexesRunner } from "./tasks/createIndexes/abstractions/CreateIndexesRunner.js";
|
|
16
|
+
export { OnBeforeTrigger } from "./tasks/createIndexes/abstractions/OnBeforeTrigger.js";
|
|
17
|
+
export { CreateIndexesRunner as CreateIndexesRunnerImpl } from "./tasks/createIndexes/CreateIndexesRunner.js";
|
|
18
|
+
export { OnBeforeTrigger as OnBeforeTriggerImpl } from "./tasks/createIndexes/OnBeforeTrigger.js";
|
|
19
|
+
export { CreateIndexesTask } from "./tasks/createIndexes/CreateIndexesTask.js";
|
|
20
|
+
export { ReindexRunner } from "./tasks/reindex/abstractions/ReindexRunner.js";
|
|
21
|
+
export { ReindexRunner as ReindexRunnerImpl } from "./tasks/reindex/ReindexRunner.js";
|
|
22
|
+
export { ReindexTask } from "./tasks/reindex/ReindexTask.js";
|
|
23
|
+
export { SearchIndexTasksFeature } from "./feature.js";
|
package/index.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import "@webiny/background-tasks/api/features/TaskController/index.js";
|
|
2
|
+
export { StorageScanner } from "./abstractions/StorageScanner.js";
|
|
3
|
+
export { IndexManager } from "./abstractions/IndexManager.js";
|
|
4
|
+
export { StorageWriter } from "./abstractions/StorageWriter.js";
|
|
5
|
+
export { IndexManagerFactory } from "./abstractions/IndexManagerFactory.js";
|
|
6
|
+
export { IndexSettingsManager } from "./abstractions/IndexSettingsManager.js";
|
|
7
|
+
export { DisableIndexing } from "./settings/abstractions/DisableIndexing.js";
|
|
8
|
+
export { EnableIndexing } from "./settings/abstractions/EnableIndexing.js";
|
|
9
|
+
export { DisableIndexing as DisableIndexingImpl } from "./settings/DisableIndexing.js";
|
|
10
|
+
export { EnableIndexing as EnableIndexingImpl } from "./settings/EnableIndexing.js";
|
|
11
|
+
export { EnableIndexingRunner } from "./tasks/enableIndexing/abstractions/EnableIndexingRunner.js";
|
|
12
|
+
export { EnableIndexingRunner as EnableIndexingRunnerImpl } from "./tasks/enableIndexing/EnableIndexingRunner.js";
|
|
13
|
+
export { EnableIndexingTask } from "./tasks/enableIndexing/EnableIndexingTask.js";
|
|
14
|
+
export { TenantIndexFactory } from "./abstractions/TenantIndexFactory.js";
|
|
15
|
+
export { CreateIndexesRunner } from "./tasks/createIndexes/abstractions/CreateIndexesRunner.js";
|
|
16
|
+
export { OnBeforeTrigger } from "./tasks/createIndexes/abstractions/OnBeforeTrigger.js";
|
|
17
|
+
export { CreateIndexesRunner as CreateIndexesRunnerImpl } from "./tasks/createIndexes/CreateIndexesRunner.js";
|
|
18
|
+
export { OnBeforeTrigger as OnBeforeTriggerImpl } from "./tasks/createIndexes/OnBeforeTrigger.js";
|
|
19
|
+
export { CreateIndexesTask } from "./tasks/createIndexes/CreateIndexesTask.js";
|
|
20
|
+
export { ReindexRunner } from "./tasks/reindex/abstractions/ReindexRunner.js";
|
|
21
|
+
export { ReindexRunner as ReindexRunnerImpl } from "./tasks/reindex/ReindexRunner.js";
|
|
22
|
+
export { ReindexTask } from "./tasks/reindex/ReindexTask.js";
|
|
23
|
+
export { SearchIndexTasksFeature } from "./feature.js";
|
package/package.json
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@webiny/api-search-index-tasks",
|
|
3
|
+
"version": "0.0.0-unstable.0156a4c312",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"exports": {
|
|
6
|
+
".": "./index.js",
|
|
7
|
+
"./*": "./*"
|
|
8
|
+
},
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "https://github.com/webiny/webiny-js.git",
|
|
12
|
+
"directory": "packages/api-search-index-tasks"
|
|
13
|
+
},
|
|
14
|
+
"description": "Platform-agnostic search index background tasks.",
|
|
15
|
+
"license": "MIT",
|
|
16
|
+
"author": "Webiny Ltd.",
|
|
17
|
+
"dependencies": {
|
|
18
|
+
"@webiny/api": "0.0.0-unstable.0156a4c312",
|
|
19
|
+
"@webiny/api-core": "0.0.0-unstable.0156a4c312",
|
|
20
|
+
"@webiny/background-tasks": "0.0.0-unstable.0156a4c312",
|
|
21
|
+
"@webiny/feature": "0.0.0-unstable.0156a4c312"
|
|
22
|
+
},
|
|
23
|
+
"devDependencies": {
|
|
24
|
+
"@webiny/build-tools": "0.0.0-unstable.0156a4c312",
|
|
25
|
+
"typescript": "7.0.2",
|
|
26
|
+
"vitest": "5.0.5"
|
|
27
|
+
},
|
|
28
|
+
"publishConfig": {
|
|
29
|
+
"access": "public"
|
|
30
|
+
},
|
|
31
|
+
"adio": {
|
|
32
|
+
"ignoreDirs": [
|
|
33
|
+
"__tests__"
|
|
34
|
+
]
|
|
35
|
+
},
|
|
36
|
+
"webiny": {
|
|
37
|
+
"publishFrom": "dist"
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { IndexSettingsManager } from "../abstractions/IndexSettingsManager.js";
|
|
2
|
+
import { DisableIndexing as Abstraction } from "./abstractions/DisableIndexing.js";
|
|
3
|
+
declare class DisableIndexingImpl implements Abstraction.Interface {
|
|
4
|
+
private readonly settings;
|
|
5
|
+
constructor(settings: IndexSettingsManager.Interface);
|
|
6
|
+
execute(index: string): Promise<Abstraction.Settings>;
|
|
7
|
+
}
|
|
8
|
+
export declare const DisableIndexing: typeof DisableIndexingImpl & {
|
|
9
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions/DisableIndexing.js").IDisableIndexing>;
|
|
10
|
+
};
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { IndexingDisableError } from "../errors/IndexingDisableError.js";
|
|
2
|
+
import { IndexSettingsManager } from "../abstractions/IndexSettingsManager.js";
|
|
3
|
+
import { DisableIndexing } from "./abstractions/DisableIndexing.js";
|
|
4
|
+
class DisableIndexingImpl {
|
|
5
|
+
constructor(settings){
|
|
6
|
+
this.settings = settings;
|
|
7
|
+
}
|
|
8
|
+
async execute(index) {
|
|
9
|
+
const settings = await this.settings.getSettings(index);
|
|
10
|
+
try {
|
|
11
|
+
await this.settings.setSettings(index, {
|
|
12
|
+
numberOfReplicas: 0,
|
|
13
|
+
refreshInterval: "-1"
|
|
14
|
+
});
|
|
15
|
+
} catch (ex) {
|
|
16
|
+
throw new IndexingDisableError(ex instanceof Error ? ex.message : String(ex));
|
|
17
|
+
}
|
|
18
|
+
return settings;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
const DisableIndexing_DisableIndexing = DisableIndexing.createImplementation({
|
|
22
|
+
implementation: DisableIndexingImpl,
|
|
23
|
+
dependencies: [
|
|
24
|
+
IndexSettingsManager
|
|
25
|
+
]
|
|
26
|
+
});
|
|
27
|
+
export { DisableIndexing_DisableIndexing as DisableIndexing };
|
|
28
|
+
|
|
29
|
+
//# sourceMappingURL=DisableIndexing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings/DisableIndexing.js","sources":["../../src/settings/DisableIndexing.ts"],"sourcesContent":["import { IndexingDisableError } from \"~/errors/IndexingDisableError.js\";\nimport { IndexSettingsManager } from \"~/abstractions/IndexSettingsManager.js\";\nimport { DisableIndexing as Abstraction } from \"./abstractions/DisableIndexing.js\";\n\nclass DisableIndexingImpl implements Abstraction.Interface {\n constructor(private readonly settings: IndexSettingsManager.Interface) {}\n\n public async execute(index: string): Promise<Abstraction.Settings> {\n const settings = await this.settings.getSettings(index);\n\n try {\n await this.settings.setSettings(index, {\n numberOfReplicas: 0,\n refreshInterval: \"-1\"\n });\n } catch (ex) {\n throw new IndexingDisableError(ex instanceof Error ? ex.message : String(ex));\n }\n\n return settings;\n }\n}\n\nexport const DisableIndexing = Abstraction.createImplementation({\n implementation: DisableIndexingImpl,\n dependencies: [IndexSettingsManager]\n});\n"],"names":["DisableIndexingImpl","settings","index","ex","IndexingDisableError","Error","String","DisableIndexing","Abstraction","IndexSettingsManager"],"mappings":";;;AAIA,MAAMA;IACF,YAA6BC,QAAwC,CAAE;aAA1CA,QAAQ,GAARA;IAA2C;IAExE,MAAa,QAAQC,KAAa,EAAiC;QAC/D,MAAMD,WAAW,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAACC;QAEjD,IAAI;YACA,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAACA,OAAO;gBACnC,kBAAkB;gBAClB,iBAAiB;YACrB;QACJ,EAAE,OAAOC,IAAI;YACT,MAAM,IAAIC,qBAAqBD,cAAcE,QAAQF,GAAG,OAAO,GAAGG,OAAOH;QAC7E;QAEA,OAAOF;IACX;AACJ;AAEO,MAAMM,kCAAkBC,gBAAAA,oBAAgC,CAAC;IAC5D,gBAAgBR;IAChB,cAAc;QAACS;KAAqB;AACxC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { IndexSettingsManager } from "../abstractions/IndexSettingsManager.js";
|
|
2
|
+
import { EnableIndexing as Abstraction } from "./abstractions/EnableIndexing.js";
|
|
3
|
+
declare class EnableIndexingImpl implements Abstraction.Interface {
|
|
4
|
+
private readonly settings;
|
|
5
|
+
constructor(settings: IndexSettingsManager.Interface);
|
|
6
|
+
execute(index: string, settings: Abstraction.Settings): Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
export declare const EnableIndexing: typeof EnableIndexingImpl & {
|
|
9
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions/EnableIndexing.js").IEnableIndexing>;
|
|
10
|
+
};
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { IndexingEnableError } from "../errors/IndexingEnableError.js";
|
|
2
|
+
import { IndexSettingsManager } from "../abstractions/IndexSettingsManager.js";
|
|
3
|
+
import { EnableIndexing } from "./abstractions/EnableIndexing.js";
|
|
4
|
+
class EnableIndexingImpl {
|
|
5
|
+
constructor(settings){
|
|
6
|
+
this.settings = settings;
|
|
7
|
+
}
|
|
8
|
+
async execute(index, settings) {
|
|
9
|
+
try {
|
|
10
|
+
const refreshInterval = parseInt(settings.refreshInterval || "", 10) || 0;
|
|
11
|
+
await this.settings.setSettings(index, {
|
|
12
|
+
...settings,
|
|
13
|
+
numberOfReplicas: settings.numberOfReplicas < 1 ? 1 : settings.numberOfReplicas,
|
|
14
|
+
refreshInterval: refreshInterval <= 0 ? "1s" : settings.refreshInterval
|
|
15
|
+
});
|
|
16
|
+
} catch (ex) {
|
|
17
|
+
throw new IndexingEnableError(ex instanceof Error ? ex.message : String(ex));
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
const EnableIndexing_EnableIndexing = EnableIndexing.createImplementation({
|
|
22
|
+
implementation: EnableIndexingImpl,
|
|
23
|
+
dependencies: [
|
|
24
|
+
IndexSettingsManager
|
|
25
|
+
]
|
|
26
|
+
});
|
|
27
|
+
export { EnableIndexing_EnableIndexing as EnableIndexing };
|
|
28
|
+
|
|
29
|
+
//# sourceMappingURL=EnableIndexing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings/EnableIndexing.js","sources":["../../src/settings/EnableIndexing.ts"],"sourcesContent":["import { IndexingEnableError } from \"~/errors/IndexingEnableError.js\";\nimport { IndexSettingsManager } from \"~/abstractions/IndexSettingsManager.js\";\nimport { EnableIndexing as Abstraction } from \"./abstractions/EnableIndexing.js\";\n\nclass EnableIndexingImpl implements Abstraction.Interface {\n constructor(private readonly settings: IndexSettingsManager.Interface) {}\n\n public async execute(index: string, settings: Abstraction.Settings): Promise<void> {\n try {\n const refreshInterval = parseInt(settings.refreshInterval || \"\", 10) || 0;\n await this.settings.setSettings(index, {\n ...settings,\n numberOfReplicas: settings.numberOfReplicas < 1 ? 1 : settings.numberOfReplicas,\n refreshInterval: refreshInterval <= 0 ? \"1s\" : settings.refreshInterval\n });\n } catch (ex) {\n throw new IndexingEnableError(ex instanceof Error ? ex.message : String(ex));\n }\n }\n}\n\nexport const EnableIndexing = Abstraction.createImplementation({\n implementation: EnableIndexingImpl,\n dependencies: [IndexSettingsManager]\n});\n"],"names":["EnableIndexingImpl","settings","index","refreshInterval","parseInt","ex","IndexingEnableError","Error","String","EnableIndexing","Abstraction","IndexSettingsManager"],"mappings":";;;AAIA,MAAMA;IACF,YAA6BC,QAAwC,CAAE;aAA1CA,QAAQ,GAARA;IAA2C;IAExE,MAAa,QAAQC,KAAa,EAAED,QAA8B,EAAiB;QAC/E,IAAI;YACA,MAAME,kBAAkBC,SAASH,SAAS,eAAe,IAAI,IAAI,OAAO;YACxE,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAACC,OAAO;gBACnC,GAAGD,QAAQ;gBACX,kBAAkBA,SAAS,gBAAgB,GAAG,IAAI,IAAIA,SAAS,gBAAgB;gBAC/E,iBAAiBE,mBAAmB,IAAI,OAAOF,SAAS,eAAe;YAC3E;QACJ,EAAE,OAAOI,IAAI;YACT,MAAM,IAAIC,oBAAoBD,cAAcE,QAAQF,GAAG,OAAO,GAAGG,OAAOH;QAC5E;IACJ;AACJ;AAEO,MAAMI,gCAAiBC,eAAAA,oBAAgC,CAAC;IAC3D,gBAAgBV;IAChB,cAAc;QAACW;KAAqB;AACxC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { IIndexSettings } from "../../abstractions/IndexManager.js";
|
|
2
|
+
export interface IDisableIndexing {
|
|
3
|
+
execute(index: string): Promise<IIndexSettings>;
|
|
4
|
+
}
|
|
5
|
+
export declare const DisableIndexing: import("@webiny/di").Abstraction<IDisableIndexing>;
|
|
6
|
+
export declare namespace DisableIndexing {
|
|
7
|
+
type Interface = IDisableIndexing;
|
|
8
|
+
type Settings = IIndexSettings;
|
|
9
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings/abstractions/DisableIndexing.js","sources":["../../../src/settings/abstractions/DisableIndexing.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { IIndexSettings } from \"~/abstractions/IndexManager.js\";\n\nexport interface IDisableIndexing {\n execute(index: string): Promise<IIndexSettings>;\n}\n\nexport const DisableIndexing = createAbstraction<IDisableIndexing>(\n \"SearchIndexTasks/DisableIndexing\"\n);\n\nexport namespace DisableIndexing {\n export type Interface = IDisableIndexing;\n export type Settings = IIndexSettings;\n}\n"],"names":["DisableIndexing","createAbstraction"],"mappings":";AAOO,MAAMA,kBAAkBC,kBAC3B"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { IIndexSettings } from "../../abstractions/IndexManager.js";
|
|
2
|
+
export interface IEnableIndexing {
|
|
3
|
+
execute(index: string, settings: IIndexSettings): Promise<void>;
|
|
4
|
+
}
|
|
5
|
+
export declare const EnableIndexing: import("@webiny/di").Abstraction<IEnableIndexing>;
|
|
6
|
+
export declare namespace EnableIndexing {
|
|
7
|
+
type Interface = IEnableIndexing;
|
|
8
|
+
type Settings = IIndexSettings;
|
|
9
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings/abstractions/EnableIndexing.js","sources":["../../../src/settings/abstractions/EnableIndexing.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { IIndexSettings } from \"~/abstractions/IndexManager.js\";\n\nexport interface IEnableIndexing {\n execute(index: string, settings: IIndexSettings): Promise<void>;\n}\n\nexport const EnableIndexing = createAbstraction<IEnableIndexing>(\"SearchIndexTasks/EnableIndexing\");\n\nexport namespace EnableIndexing {\n export type Interface = IEnableIndexing;\n export type Settings = IIndexSettings;\n}\n"],"names":["EnableIndexing","createAbstraction"],"mappings":";AAOO,MAAMA,iBAAiBC,kBAAmC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
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 { TenantIndexFactory } from "../../abstractions/TenantIndexFactory.js";
|
|
6
|
+
import { ListTenantsUseCase } from "@webiny/api-core/features/tenancy/ListTenants/index.js";
|
|
7
|
+
import { CreateIndexesRunner as Abstraction } from "./abstractions/CreateIndexesRunner.js";
|
|
8
|
+
declare class CreateIndexesRunnerImpl implements Abstraction.Interface {
|
|
9
|
+
private readonly controller;
|
|
10
|
+
private readonly tenantContext;
|
|
11
|
+
private readonly listTenantsUseCase;
|
|
12
|
+
private readonly indexFactories;
|
|
13
|
+
constructor(controller: TaskController.Interface, tenantContext: TenantContext.Interface, listTenantsUseCase: ListTenantsUseCase.Interface, indexFactories: TenantIndexFactory.Interface[]);
|
|
14
|
+
execute(matching: string | undefined, done: string[], indexManager: IIndexManager): Promise<TaskDefinition.Result>;
|
|
15
|
+
}
|
|
16
|
+
export declare const CreateIndexesRunner: typeof CreateIndexesRunnerImpl & {
|
|
17
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions/CreateIndexesRunner.js").ICreateIndexesRunner>;
|
|
18
|
+
};
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,73 @@
|
|
|
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 { TenantIndexFactory } from "../../abstractions/TenantIndexFactory.js";
|
|
4
|
+
import { ListTenantsUseCase } from "@webiny/api-core/features/tenancy/ListTenants/index.js";
|
|
5
|
+
import { listIndexes } from "./listIndexes.js";
|
|
6
|
+
import { createIndexFactory } from "./createIndexFactory.js";
|
|
7
|
+
import { CreateIndexesRunner } from "./abstractions/CreateIndexesRunner.js";
|
|
8
|
+
class CreateIndexesRunnerImpl {
|
|
9
|
+
constructor(controller, tenantContext, listTenantsUseCase, indexFactories){
|
|
10
|
+
this.controller = controller;
|
|
11
|
+
this.tenantContext = tenantContext;
|
|
12
|
+
this.listTenantsUseCase = listTenantsUseCase;
|
|
13
|
+
this.indexFactories = indexFactories;
|
|
14
|
+
}
|
|
15
|
+
async execute(matching, done, indexManager) {
|
|
16
|
+
if (0 === this.indexFactories.length) return this.controller.response.done("No index plugins found.");
|
|
17
|
+
const tenantsResult = await this.listTenantsUseCase.execute();
|
|
18
|
+
if (tenantsResult.isFail()) return this.controller.response.error(tenantsResult.error);
|
|
19
|
+
const tenants = tenantsResult.value;
|
|
20
|
+
const indexes = await listIndexes(this.tenantContext, tenants, this.indexFactories);
|
|
21
|
+
if (0 === indexes.length) return this.controller.response.done("No indexes found.");
|
|
22
|
+
const isIndexAllowed = (index)=>{
|
|
23
|
+
if ("string" != typeof matching || !matching) return true;
|
|
24
|
+
return index.includes(matching);
|
|
25
|
+
};
|
|
26
|
+
const factory = createIndexFactory(indexManager);
|
|
27
|
+
for (const { index, settings } of indexes){
|
|
28
|
+
if (this.controller.runtime.isAborted()) return this.controller.response.aborted();
|
|
29
|
+
else if (this.controller.runtime.isCloseToTimeout()) return this.controller.response.continue({
|
|
30
|
+
done
|
|
31
|
+
});
|
|
32
|
+
try {
|
|
33
|
+
if (done.includes(index)) continue;
|
|
34
|
+
else if (false === isIndexAllowed(index)) continue;
|
|
35
|
+
const exists = await indexManager.indexExists(index);
|
|
36
|
+
if (exists) continue;
|
|
37
|
+
done.push(index);
|
|
38
|
+
await factory.create(index, settings);
|
|
39
|
+
await this.controller.logger.info({
|
|
40
|
+
message: `Index "${index}" created.`,
|
|
41
|
+
data: {
|
|
42
|
+
index
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
} catch (ex) {
|
|
46
|
+
await this.controller.logger.error({
|
|
47
|
+
message: `Failed to create index "${index}".`,
|
|
48
|
+
error: ex
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return this.controller.response.done("Indexes created.", {
|
|
53
|
+
done
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
const CreateIndexesRunner_CreateIndexesRunner = CreateIndexesRunner.createImplementation({
|
|
58
|
+
implementation: CreateIndexesRunnerImpl,
|
|
59
|
+
dependencies: [
|
|
60
|
+
TaskController,
|
|
61
|
+
TenantContext,
|
|
62
|
+
ListTenantsUseCase,
|
|
63
|
+
[
|
|
64
|
+
TenantIndexFactory,
|
|
65
|
+
{
|
|
66
|
+
multiple: true
|
|
67
|
+
}
|
|
68
|
+
]
|
|
69
|
+
]
|
|
70
|
+
});
|
|
71
|
+
export { CreateIndexesRunner_CreateIndexesRunner as CreateIndexesRunner };
|
|
72
|
+
|
|
73
|
+
//# sourceMappingURL=CreateIndexesRunner.js.map
|