@webiny/api-elasticsearch-tasks 0.0.0-unstable.e53eceafb5 → 0.0.0-unstable.e6f0dc8ca7

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.
Files changed (152) hide show
  1. package/README.md +10 -9
  2. package/abstractions/DbRegistry.d.ts +11 -0
  3. package/abstractions/DbRegistry.js +4 -0
  4. package/abstractions/DbRegistry.js.map +1 -0
  5. package/abstractions/OpensearchTenantIndexFactory.d.ts +14 -0
  6. package/abstractions/OpensearchTenantIndexFactory.js +4 -0
  7. package/abstractions/OpensearchTenantIndexFactory.js.map +1 -0
  8. package/abstractions/SynchronizationContext.d.ts +8 -0
  9. package/abstractions/SynchronizationContext.js +4 -0
  10. package/abstractions/SynchronizationContext.js.map +1 -0
  11. package/errors/IndexSettingsGetError.d.ts +1 -1
  12. package/errors/IndexSettingsGetError.js +2 -10
  13. package/errors/IndexSettingsGetError.js.map +1 -1
  14. package/errors/IndexSettingsSetError.d.ts +1 -1
  15. package/errors/IndexSettingsSetError.js +2 -10
  16. package/errors/IndexSettingsSetError.js.map +1 -1
  17. package/errors/IndexingDisableError.js +1 -8
  18. package/errors/IndexingDisableError.js.map +1 -1
  19. package/errors/IndexingEnableError.js +1 -8
  20. package/errors/IndexingEnableError.js.map +1 -1
  21. package/errors/index.d.ts +4 -4
  22. package/errors/index.js +4 -49
  23. package/errors/index.js.map +1 -1
  24. package/helpers/getClients.d.ts +5 -0
  25. package/helpers/getClients.js +16 -0
  26. package/helpers/getClients.js.map +1 -0
  27. package/helpers/scan.d.ts +2 -2
  28. package/helpers/scan.js +3 -10
  29. package/helpers/scan.js.map +1 -1
  30. package/index.d.ts +5 -5
  31. package/index.js +15 -25
  32. package/index.js.map +1 -1
  33. package/package.json +30 -38
  34. package/settings/DisableIndexing.d.ts +2 -2
  35. package/settings/DisableIndexing.js +3 -10
  36. package/settings/DisableIndexing.js.map +1 -1
  37. package/settings/EnableIndexing.d.ts +2 -2
  38. package/settings/EnableIndexing.js +3 -10
  39. package/settings/EnableIndexing.js.map +1 -1
  40. package/settings/IndexManager.d.ts +3 -3
  41. package/settings/IndexManager.js +11 -18
  42. package/settings/IndexManager.js.map +1 -1
  43. package/settings/IndexSettingsManager.d.ts +2 -2
  44. package/settings/IndexSettingsManager.js +7 -14
  45. package/settings/IndexSettingsManager.js.map +1 -1
  46. package/settings/index.d.ts +1 -1
  47. package/settings/index.js +1 -16
  48. package/settings/index.js.map +1 -1
  49. package/settings/types.d.ts +1 -1
  50. package/settings/types.js +1 -5
  51. package/settings/types.js.map +1 -1
  52. package/tasks/Manager.d.ts +16 -26
  53. package/tasks/Manager.js +10 -31
  54. package/tasks/Manager.js.map +1 -1
  55. package/tasks/createIndexes/CreateIndexesTask.d.ts +23 -0
  56. package/tasks/createIndexes/CreateIndexesTask.js +53 -0
  57. package/tasks/createIndexes/CreateIndexesTask.js.map +1 -0
  58. package/tasks/createIndexes/CreateIndexesTaskRunner.d.ts +14 -8
  59. package/tasks/createIndexes/CreateIndexesTaskRunner.js +22 -29
  60. package/tasks/createIndexes/CreateIndexesTaskRunner.js.map +1 -1
  61. package/tasks/createIndexes/OnBeforeTrigger.d.ts +7 -9
  62. package/tasks/createIndexes/OnBeforeTrigger.js +11 -28
  63. package/tasks/createIndexes/OnBeforeTrigger.js.map +1 -1
  64. package/tasks/createIndexes/createIndex.d.ts +1 -1
  65. package/tasks/createIndexes/createIndex.js +2 -9
  66. package/tasks/createIndexes/createIndex.js.map +1 -1
  67. package/tasks/createIndexes/index.d.ts +2 -3
  68. package/tasks/createIndexes/index.js +17 -63
  69. package/tasks/createIndexes/index.js.map +1 -1
  70. package/tasks/createIndexes/listIndexes.d.ts +4 -12
  71. package/tasks/createIndexes/listIndexes.js +10 -43
  72. package/tasks/createIndexes/listIndexes.js.map +1 -1
  73. package/tasks/createIndexes/types.js +1 -5
  74. package/tasks/dataSynchronization/DataSynchronizationTask.d.ts +28 -0
  75. package/tasks/dataSynchronization/DataSynchronizationTask.js +69 -0
  76. package/tasks/dataSynchronization/DataSynchronizationTask.js.map +1 -0
  77. package/tasks/dataSynchronization/DataSynchronizationTaskRunner.d.ts +6 -3
  78. package/tasks/dataSynchronization/DataSynchronizationTaskRunner.js +7 -17
  79. package/tasks/dataSynchronization/DataSynchronizationTaskRunner.js.map +1 -1
  80. package/tasks/dataSynchronization/createFactories.d.ts +1 -1
  81. package/tasks/dataSynchronization/createFactories.js +3 -10
  82. package/tasks/dataSynchronization/createFactories.js.map +1 -1
  83. package/tasks/dataSynchronization/elasticsearch/ElasticsearchFetcher.d.ts +2 -2
  84. package/tasks/dataSynchronization/elasticsearch/ElasticsearchFetcher.js +17 -14
  85. package/tasks/dataSynchronization/elasticsearch/ElasticsearchFetcher.js.map +1 -1
  86. package/tasks/dataSynchronization/elasticsearch/ElasticsearchSynchronize.d.ts +8 -10
  87. package/tasks/dataSynchronization/elasticsearch/ElasticsearchSynchronize.js +18 -24
  88. package/tasks/dataSynchronization/elasticsearch/ElasticsearchSynchronize.js.map +1 -1
  89. package/tasks/dataSynchronization/elasticsearch/ElasticsearchToDynamoDbSynchronization.d.ts +1 -1
  90. package/tasks/dataSynchronization/elasticsearch/ElasticsearchToDynamoDbSynchronization.js +6 -13
  91. package/tasks/dataSynchronization/elasticsearch/ElasticsearchToDynamoDbSynchronization.js.map +1 -1
  92. package/tasks/dataSynchronization/elasticsearch/abstractions/ElasticsearchFetcher.d.ts +1 -1
  93. package/tasks/dataSynchronization/elasticsearch/abstractions/ElasticsearchFetcher.js +1 -5
  94. package/tasks/dataSynchronization/elasticsearch/abstractions/ElasticsearchFetcher.js.map +1 -1
  95. package/tasks/dataSynchronization/elasticsearch/abstractions/ElasticsearchSynchronize.js +1 -5
  96. package/tasks/dataSynchronization/elasticsearch/shouldIgnoreEsResponseError.js +1 -8
  97. package/tasks/dataSynchronization/elasticsearch/shouldIgnoreEsResponseError.js.map +1 -1
  98. package/tasks/dataSynchronization/entities/getElasticsearchEntity.d.ts +7 -710
  99. package/tasks/dataSynchronization/entities/getElasticsearchEntity.js +6 -28
  100. package/tasks/dataSynchronization/entities/getElasticsearchEntity.js.map +1 -1
  101. package/tasks/dataSynchronization/entities/getElasticsearchEntityType.d.ts +1 -4
  102. package/tasks/dataSynchronization/entities/getElasticsearchEntityType.js +2 -19
  103. package/tasks/dataSynchronization/entities/getElasticsearchEntityType.js.map +1 -1
  104. package/tasks/dataSynchronization/entities/getTable.d.ts +3 -3
  105. package/tasks/dataSynchronization/entities/getTable.js +3 -10
  106. package/tasks/dataSynchronization/entities/getTable.js.map +1 -1
  107. package/tasks/dataSynchronization/entities/index.d.ts +3 -3
  108. package/tasks/dataSynchronization/entities/index.js +3 -38
  109. package/tasks/dataSynchronization/entities/index.js.map +1 -1
  110. package/tasks/dataSynchronization/index.d.ts +3 -4
  111. package/tasks/dataSynchronization/index.js +22 -74
  112. package/tasks/dataSynchronization/index.js.map +1 -1
  113. package/tasks/dataSynchronization/types.d.ts +9 -8
  114. package/tasks/dataSynchronization/types.js +1 -5
  115. package/tasks/dataSynchronization/types.js.map +1 -1
  116. package/tasks/enableIndexing/EnableIndexingTaskRunner.d.ts +5 -6
  117. package/tasks/enableIndexing/EnableIndexingTaskRunner.js +5 -13
  118. package/tasks/enableIndexing/EnableIndexingTaskRunner.js.map +1 -1
  119. package/tasks/enableIndexing/index.d.ts +2 -3
  120. package/tasks/enableIndexing/index.js +40 -46
  121. package/tasks/enableIndexing/index.js.map +1 -1
  122. package/tasks/enableIndexing/types.js +1 -5
  123. package/tasks/index.d.ts +4 -4
  124. package/tasks/index.js +4 -49
  125. package/tasks/index.js.map +1 -1
  126. package/tasks/reindexing/ReindexingTaskRunner.d.ts +4 -5
  127. package/tasks/reindexing/ReindexingTaskRunner.js +18 -26
  128. package/tasks/reindexing/ReindexingTaskRunner.js.map +1 -1
  129. package/tasks/reindexing/index.d.ts +1 -1
  130. package/tasks/reindexing/index.js +1 -16
  131. package/tasks/reindexing/index.js.map +1 -1
  132. package/tasks/reindexing/reindexingTaskDefinition.d.ts +2 -2
  133. package/tasks/reindexing/reindexingTaskDefinition.js +43 -44
  134. package/tasks/reindexing/reindexingTaskDefinition.js.map +1 -1
  135. package/types.d.ts +18 -20
  136. package/types.js +1 -5
  137. package/types.js.map +1 -1
  138. package/definitions/entry.d.ts +0 -11
  139. package/definitions/entry.js +0 -43
  140. package/definitions/entry.js.map +0 -1
  141. package/definitions/index.d.ts +0 -2
  142. package/definitions/index.js +0 -29
  143. package/definitions/index.js.map +0 -1
  144. package/definitions/table.d.ts +0 -7
  145. package/definitions/table.js +0 -23
  146. package/definitions/table.js.map +0 -1
  147. package/tasks/createIndexes/CreateElasticsearchIndexTaskPlugin.d.ts +0 -23
  148. package/tasks/createIndexes/CreateElasticsearchIndexTaskPlugin.js +0 -25
  149. package/tasks/createIndexes/CreateElasticsearchIndexTaskPlugin.js.map +0 -1
  150. package/tasks/createIndexes/listCreateElasticsearchIndexTaskPlugin.d.ts +0 -4
  151. package/tasks/createIndexes/listCreateElasticsearchIndexTaskPlugin.js +0 -13
  152. package/tasks/createIndexes/listCreateElasticsearchIndexTaskPlugin.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["_errors","require","EnableIndexing","constructor","settings","exec","index","refreshInterval","parseInt","setSettings","numberOfReplicas","ex","IndexingEnableError","exports"],"sources":["EnableIndexing.ts"],"sourcesContent":["import { IndexingEnableError } from \"~/errors\";\nimport type { IIndexSettingsValues } from \"~/types\";\nimport type { IndexSettingsManager } from \"./IndexSettingsManager\";\n\nexport class EnableIndexing {\n private readonly settings: IndexSettingsManager;\n\n public constructor(settings: IndexSettingsManager) {\n this.settings = settings;\n }\n\n public async exec(index: string, settings: IIndexSettingsValues): 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);\n }\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAIO,MAAMC,cAAc,CAAC;EAGjBC,WAAWA,CAACC,QAA8B,EAAE;IAC/C,IAAI,CAACA,QAAQ,GAAGA,QAAQ;EAC5B;EAEA,MAAaC,IAAIA,CAACC,KAAa,EAAEF,QAA8B,EAAiB;IAC5E,IAAI;MACA,MAAMG,eAAe,GAAGC,QAAQ,CAACJ,QAAQ,CAACG,eAAe,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC;MACzE,MAAM,IAAI,CAACH,QAAQ,CAACK,WAAW,CAACH,KAAK,EAAE;QACnC,GAAGF,QAAQ;QACXM,gBAAgB,EAAEN,QAAQ,CAACM,gBAAgB,GAAG,CAAC,GAAG,CAAC,GAAGN,QAAQ,CAACM,gBAAgB;QAC/EH,eAAe,EAAEA,eAAe,IAAI,CAAC,GAAG,IAAI,GAAGH,QAAQ,CAACG;MAC5D,CAAC,CAAC;IACN,CAAC,CAAC,OAAOI,EAAE,EAAE;MACT,MAAM,IAAIC,2BAAmB,CAACD,EAAE,CAAC;IACrC;EACJ;AACJ;AAACE,OAAA,CAAAX,cAAA,GAAAA,cAAA","ignoreList":[]}
1
+ {"version":3,"names":["IndexingEnableError","EnableIndexing","constructor","settings","exec","index","refreshInterval","parseInt","setSettings","numberOfReplicas","ex"],"sources":["EnableIndexing.ts"],"sourcesContent":["import { IndexingEnableError } from \"~/errors/index.js\";\nimport type { IIndexSettingsValues } from \"~/types.js\";\nimport type { IndexSettingsManager } from \"./IndexSettingsManager.js\";\n\nexport class EnableIndexing {\n private readonly settings: IndexSettingsManager;\n\n public constructor(settings: IndexSettingsManager) {\n this.settings = settings;\n }\n\n public async exec(index: string, settings: IIndexSettingsValues): 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);\n }\n }\n}\n"],"mappings":"AAAA,SAASA,mBAAmB;AAI5B,OAAO,MAAMC,cAAc,CAAC;EAGjBC,WAAWA,CAACC,QAA8B,EAAE;IAC/C,IAAI,CAACA,QAAQ,GAAGA,QAAQ;EAC5B;EAEA,MAAaC,IAAIA,CAACC,KAAa,EAAEF,QAA8B,EAAiB;IAC5E,IAAI;MACA,MAAMG,eAAe,GAAGC,QAAQ,CAACJ,QAAQ,CAACG,eAAe,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC;MACzE,MAAM,IAAI,CAACH,QAAQ,CAACK,WAAW,CAACH,KAAK,EAAE;QACnC,GAAGF,QAAQ;QACXM,gBAAgB,EAAEN,QAAQ,CAACM,gBAAgB,GAAG,CAAC,GAAG,CAAC,GAAGN,QAAQ,CAACM,gBAAgB;QAC/EH,eAAe,EAAEA,eAAe,IAAI,CAAC,GAAG,IAAI,GAAGH,QAAQ,CAACG;MAC5D,CAAC,CAAC;IACN,CAAC,CAAC,OAAOI,EAAE,EAAE;MACT,MAAM,IAAIV,mBAAmB,CAACU,EAAE,CAAC;IACrC;EACJ;AACJ","ignoreList":[]}
@@ -1,6 +1,6 @@
1
- import type { IElasticsearchIndexingTaskValuesSettings, IIndexSettingsValues } from "../types";
2
- import type { IIndexManager } from "./types";
3
- import type { Client } from "@webiny/api-elasticsearch";
1
+ import type { IElasticsearchIndexingTaskValuesSettings, IIndexSettingsValues } from "../types.js";
2
+ import type { IIndexManager } from "../settings/types.js";
3
+ import type { Client } from "@webiny/api-opensearch";
4
4
  export interface IListIndicesResponse {
5
5
  index: string;
6
6
  }
@@ -1,18 +1,12 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.IndexManager = void 0;
7
- var _IndexSettingsManager = require("./IndexSettingsManager");
8
- var _DisableIndexing = require("./DisableIndexing");
9
- var _EnableIndexing = require("./EnableIndexing");
10
- var _utils = require("@webiny/utils");
1
+ import { IndexSettingsManager } from "./IndexSettingsManager.js";
2
+ import { DisableIndexing } from "./DisableIndexing.js";
3
+ import { EnableIndexing } from "./EnableIndexing.js";
4
+ import { getObjectProperties } from "@webiny/utils";
11
5
  const defaultIndexSettings = {
12
6
  numberOfReplicas: 1,
13
7
  refreshInterval: "1s"
14
8
  };
15
- const indexPrefix = process.env.ELASTIC_SEARCH_INDEX_PREFIX || "";
9
+ const indexPrefix = process.env.OPENSEARCH_INDEX_PREFIX || "";
16
10
  const filterIndex = item => {
17
11
  if (!item) {
18
12
  return false;
@@ -23,15 +17,15 @@ const filterIndex = item => {
23
17
  }
24
18
  return true;
25
19
  };
26
- class IndexManager {
20
+ export class IndexManager {
27
21
  get settings() {
28
22
  return this._settings;
29
23
  }
30
24
  constructor(client, settings, defaults) {
31
- const indexSettings = new _IndexSettingsManager.IndexSettingsManager(client);
25
+ const indexSettings = new IndexSettingsManager(client);
32
26
  this.client = client;
33
- this.disable = new _DisableIndexing.DisableIndexing(indexSettings);
34
- this.enable = new _EnableIndexing.EnableIndexing(indexSettings);
27
+ this.disable = new DisableIndexing(indexSettings);
28
+ this.enable = new EnableIndexing(indexSettings);
35
29
  this._settings = settings;
36
30
  this.defaults = {
37
31
  refreshInterval: defaults?.refreshInterval || defaultIndexSettings.refreshInterval,
@@ -46,11 +40,11 @@ class IndexManager {
46
40
  if (!Array.isArray(response.body)) {
47
41
  return [];
48
42
  }
49
- return response.body.map(item => item.index).filter(filterIndex);
43
+ return response.body.map(item => item.index).filter(index => filterIndex(index));
50
44
  } catch (ex) {
51
45
  console.error(JSON.stringify({
52
46
  message: "Failed to list indices.",
53
- error: (0, _utils.getObjectProperties)(ex)
47
+ error: getObjectProperties(ex)
54
48
  }));
55
49
  return [];
56
50
  }
@@ -95,6 +89,5 @@ class IndexManager {
95
89
  return !!response.body;
96
90
  }
97
91
  }
98
- exports.IndexManager = IndexManager;
99
92
 
100
93
  //# sourceMappingURL=IndexManager.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_IndexSettingsManager","require","_DisableIndexing","_EnableIndexing","_utils","defaultIndexSettings","numberOfReplicas","refreshInterval","indexPrefix","process","env","ELASTIC_SEARCH_INDEX_PREFIX","filterIndex","item","startsWith","IndexManager","settings","_settings","constructor","client","defaults","indexSettings","IndexSettingsManager","disable","DisableIndexing","enable","EnableIndexing","list","response","cat","indices","format","Array","isArray","body","map","index","filter","ex","console","error","JSON","stringify","message","getObjectProperties","disableIndexing","exec","enableIndexing","indexes","Object","keys","createIndex","create","indexExists","exists","ignore_unavailable","allow_no_indices","include_defaults","flat_settings","local","exports"],"sources":["IndexManager.ts"],"sourcesContent":["import { IndexSettingsManager } from \"~/settings/IndexSettingsManager\";\nimport { DisableIndexing } from \"./DisableIndexing\";\nimport { EnableIndexing } from \"./EnableIndexing\";\nimport type { IElasticsearchIndexingTaskValuesSettings, IIndexSettingsValues } from \"~/types\";\nimport type { IIndexManager } from \"~/settings/types\";\nimport type { Client } from \"@webiny/api-elasticsearch\";\nimport { getObjectProperties } from \"@webiny/utils\";\n\nconst defaultIndexSettings: IIndexSettingsValues = {\n numberOfReplicas: 1,\n refreshInterval: \"1s\"\n};\n\nexport interface IListIndicesResponse {\n index: string;\n}\n\nconst indexPrefix = process.env.ELASTIC_SEARCH_INDEX_PREFIX || \"\";\nconst filterIndex = (item?: string) => {\n if (!item) {\n return false;\n } else if (item.startsWith(\".\")) {\n return false;\n } else if (indexPrefix) {\n return item.startsWith(indexPrefix);\n }\n return true;\n};\n\nexport class IndexManager implements IIndexManager {\n private readonly client: Client;\n private readonly disable: DisableIndexing;\n private readonly enable: EnableIndexing;\n private readonly _settings: IElasticsearchIndexingTaskValuesSettings;\n\n private readonly defaults: IIndexSettingsValues;\n\n public get settings(): IElasticsearchIndexingTaskValuesSettings {\n return this._settings;\n }\n\n public constructor(\n client: Client,\n settings: IElasticsearchIndexingTaskValuesSettings,\n defaults?: Partial<IIndexSettingsValues>\n ) {\n const indexSettings = new IndexSettingsManager(client);\n this.client = client;\n this.disable = new DisableIndexing(indexSettings);\n this.enable = new EnableIndexing(indexSettings);\n this._settings = settings;\n this.defaults = {\n refreshInterval: defaults?.refreshInterval || defaultIndexSettings.refreshInterval,\n numberOfReplicas: defaults?.numberOfReplicas || defaultIndexSettings.numberOfReplicas\n };\n }\n\n public async list(): Promise<string[]> {\n try {\n const response = await this.client.cat.indices<IListIndicesResponse[]>({\n format: \"json\"\n });\n if (!Array.isArray(response.body)) {\n return [];\n }\n return response.body.map(item => item.index).filter(filterIndex);\n } catch (ex) {\n console.error(\n JSON.stringify({\n message: \"Failed to list indices.\",\n error: getObjectProperties(ex)\n })\n );\n return [];\n }\n }\n\n public async disableIndexing(index: string) {\n /**\n * No need to disable indexing if it's already disabled.\n */\n if (this._settings[index]) {\n return this._settings[index];\n }\n const settings = await this.disable.exec(index);\n this._settings[index] = settings;\n return settings;\n }\n\n public async enableIndexing(index?: string) {\n if (!index) {\n const indexes = Object.keys(this._settings);\n for (const index of indexes) {\n await this.enableIndexing(index);\n }\n return;\n }\n const settings = this._settings[index] || this.defaults;\n await this.enable.exec(index, settings);\n }\n\n public async createIndex(index: string, settings?: Record<string, any>): Promise<void> {\n await this.client.indices.create({\n index,\n body: settings\n });\n }\n\n public async indexExists(index: string): Promise<boolean> {\n const response = await this.client.indices.exists({\n index,\n ignore_unavailable: false,\n allow_no_indices: true,\n include_defaults: true,\n flat_settings: false,\n local: false\n });\n return !!response.body;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["IndexSettingsManager","DisableIndexing","EnableIndexing","getObjectProperties","defaultIndexSettings","numberOfReplicas","refreshInterval","indexPrefix","process","env","OPENSEARCH_INDEX_PREFIX","filterIndex","item","startsWith","IndexManager","settings","_settings","constructor","client","defaults","indexSettings","disable","enable","list","response","cat","indices","format","Array","isArray","body","map","index","filter","ex","console","error","JSON","stringify","message","disableIndexing","exec","enableIndexing","indexes","Object","keys","createIndex","create","indexExists","exists","ignore_unavailable","allow_no_indices","include_defaults","flat_settings","local"],"sources":["IndexManager.ts"],"sourcesContent":["import { IndexSettingsManager } from \"~/settings/IndexSettingsManager.js\";\nimport { DisableIndexing } from \"./DisableIndexing.js\";\nimport { EnableIndexing } from \"./EnableIndexing.js\";\nimport type { IElasticsearchIndexingTaskValuesSettings, IIndexSettingsValues } from \"~/types.js\";\nimport type { IIndexManager } from \"~/settings/types.js\";\nimport type { Client } from \"@webiny/api-opensearch\";\nimport { getObjectProperties } from \"@webiny/utils\";\n\nconst defaultIndexSettings: IIndexSettingsValues = {\n numberOfReplicas: 1,\n refreshInterval: \"1s\"\n};\n\nexport interface IListIndicesResponse {\n index: string;\n}\n\nconst indexPrefix = process.env.OPENSEARCH_INDEX_PREFIX || \"\";\nconst filterIndex = (item?: string) => {\n if (!item) {\n return false;\n } else if (item.startsWith(\".\")) {\n return false;\n } else if (indexPrefix) {\n return item.startsWith(indexPrefix);\n }\n return true;\n};\n\nexport class IndexManager implements IIndexManager {\n private readonly client: Client;\n private readonly disable: DisableIndexing;\n private readonly enable: EnableIndexing;\n private readonly _settings: IElasticsearchIndexingTaskValuesSettings;\n\n private readonly defaults: IIndexSettingsValues;\n\n public get settings(): IElasticsearchIndexingTaskValuesSettings {\n return this._settings;\n }\n\n public constructor(\n client: Client,\n settings: IElasticsearchIndexingTaskValuesSettings,\n defaults?: Partial<IIndexSettingsValues>\n ) {\n const indexSettings = new IndexSettingsManager(client);\n this.client = client;\n this.disable = new DisableIndexing(indexSettings);\n this.enable = new EnableIndexing(indexSettings);\n this._settings = settings;\n this.defaults = {\n refreshInterval: defaults?.refreshInterval || defaultIndexSettings.refreshInterval,\n numberOfReplicas: defaults?.numberOfReplicas || defaultIndexSettings.numberOfReplicas\n };\n }\n\n public async list(): Promise<string[]> {\n try {\n const response = await this.client.cat.indices({\n format: \"json\"\n });\n if (!Array.isArray(response.body)) {\n return [];\n }\n return response.body\n .map(item => item.index)\n .filter((index): index is string => filterIndex(index));\n } catch (ex) {\n console.error(\n JSON.stringify({\n message: \"Failed to list indices.\",\n error: getObjectProperties(ex)\n })\n );\n return [];\n }\n }\n\n public async disableIndexing(index: string) {\n /**\n * No need to disable indexing if it's already disabled.\n */\n if (this._settings[index]) {\n return this._settings[index];\n }\n const settings = await this.disable.exec(index);\n this._settings[index] = settings;\n return settings;\n }\n\n public async enableIndexing(index?: string) {\n if (!index) {\n const indexes = Object.keys(this._settings);\n for (const index of indexes) {\n await this.enableIndexing(index);\n }\n return;\n }\n const settings = this._settings[index] || this.defaults;\n await this.enable.exec(index, settings);\n }\n\n public async createIndex(index: string, settings?: Record<string, any>): Promise<void> {\n await this.client.indices.create({\n index,\n body: settings\n });\n }\n\n public async indexExists(index: string): Promise<boolean> {\n const response = await this.client.indices.exists({\n index,\n ignore_unavailable: false,\n allow_no_indices: true,\n include_defaults: true,\n flat_settings: false,\n local: false\n });\n return !!response.body;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
- import type { Client } from "@webiny/api-elasticsearch";
2
- import type { IIndexSettingsValues } from "../types";
1
+ import type { Client } from "@webiny/api-opensearch";
2
+ import type { IIndexSettingsValues } from "../types.js";
3
3
  export declare class IndexSettingsManager {
4
4
  private readonly elasticsearch;
5
5
  constructor(elasticsearch: Client);
@@ -1,11 +1,5 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.IndexSettingsManager = void 0;
7
- var _errors = require("../errors");
8
- class IndexSettingsManager {
1
+ import { IndexSettingsGetError, IndexSettingsSetError } from "../errors/index.js";
2
+ export class IndexSettingsManager {
9
3
  constructor(elasticsearch) {
10
4
  this.elasticsearch = elasticsearch;
11
5
  }
@@ -14,13 +8,13 @@ class IndexSettingsManager {
14
8
  const response = await this.elasticsearch.indices.getSettings({
15
9
  index
16
10
  });
17
- const setting = response.body[index].settings.index;
11
+ const setting = response.body[index]?.settings?.index;
18
12
  return {
19
- numberOfReplicas: setting.number_of_replicas,
20
- refreshInterval: setting.refresh_interval
13
+ numberOfReplicas: parseInt(String(setting?.number_of_replicas ?? "0"), 10),
14
+ refreshInterval: setting?.refresh_interval ?? "1s"
21
15
  };
22
16
  } catch (ex) {
23
- throw new _errors.IndexSettingsGetError(ex, index);
17
+ throw new IndexSettingsGetError(ex, index);
24
18
  }
25
19
  }
26
20
  async setSettings(index, settings) {
@@ -35,10 +29,9 @@ class IndexSettingsManager {
35
29
  }
36
30
  });
37
31
  } catch (ex) {
38
- throw new _errors.IndexSettingsSetError(ex, index);
32
+ throw new IndexSettingsSetError(ex, index);
39
33
  }
40
34
  }
41
35
  }
42
- exports.IndexSettingsManager = IndexSettingsManager;
43
36
 
44
37
  //# sourceMappingURL=IndexSettingsManager.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_errors","require","IndexSettingsManager","constructor","elasticsearch","getSettings","index","response","indices","setting","body","settings","numberOfReplicas","number_of_replicas","refreshInterval","refresh_interval","ex","IndexSettingsGetError","setSettings","putSettings","IndexSettingsSetError","exports"],"sources":["IndexSettingsManager.ts"],"sourcesContent":["import type { Client } from \"@webiny/api-elasticsearch\";\nimport { IndexSettingsGetError, IndexSettingsSetError } from \"~/errors\";\nimport type { IIndexSettingsValues } from \"~/types\";\n\nexport class IndexSettingsManager {\n private readonly elasticsearch: Client;\n\n public constructor(elasticsearch: Client) {\n this.elasticsearch = elasticsearch;\n }\n\n public async getSettings(index: string): Promise<IIndexSettingsValues> {\n try {\n const response = await this.elasticsearch.indices.getSettings({\n index\n });\n\n const setting = response.body[index].settings.index;\n\n return {\n numberOfReplicas: setting.number_of_replicas,\n refreshInterval: setting.refresh_interval\n };\n } catch (ex) {\n throw new IndexSettingsGetError(ex, index);\n }\n }\n\n public async setSettings(index: string, settings: IIndexSettingsValues): Promise<void> {\n try {\n await this.elasticsearch.indices.putSettings({\n index,\n body: {\n index: {\n number_of_replicas: settings.numberOfReplicas,\n refresh_interval: settings.refreshInterval\n }\n }\n });\n } catch (ex) {\n throw new IndexSettingsSetError(ex, index);\n }\n }\n}\n"],"mappings":";;;;;;AACA,IAAAA,OAAA,GAAAC,OAAA;AAGO,MAAMC,oBAAoB,CAAC;EAGvBC,WAAWA,CAACC,aAAqB,EAAE;IACtC,IAAI,CAACA,aAAa,GAAGA,aAAa;EACtC;EAEA,MAAaC,WAAWA,CAACC,KAAa,EAAiC;IACnE,IAAI;MACA,MAAMC,QAAQ,GAAG,MAAM,IAAI,CAACH,aAAa,CAACI,OAAO,CAACH,WAAW,CAAC;QAC1DC;MACJ,CAAC,CAAC;MAEF,MAAMG,OAAO,GAAGF,QAAQ,CAACG,IAAI,CAACJ,KAAK,CAAC,CAACK,QAAQ,CAACL,KAAK;MAEnD,OAAO;QACHM,gBAAgB,EAAEH,OAAO,CAACI,kBAAkB;QAC5CC,eAAe,EAAEL,OAAO,CAACM;MAC7B,CAAC;IACL,CAAC,CAAC,OAAOC,EAAE,EAAE;MACT,MAAM,IAAIC,6BAAqB,CAACD,EAAE,EAAEV,KAAK,CAAC;IAC9C;EACJ;EAEA,MAAaY,WAAWA,CAACZ,KAAa,EAAEK,QAA8B,EAAiB;IACnF,IAAI;MACA,MAAM,IAAI,CAACP,aAAa,CAACI,OAAO,CAACW,WAAW,CAAC;QACzCb,KAAK;QACLI,IAAI,EAAE;UACFJ,KAAK,EAAE;YACHO,kBAAkB,EAAEF,QAAQ,CAACC,gBAAgB;YAC7CG,gBAAgB,EAAEJ,QAAQ,CAACG;UAC/B;QACJ;MACJ,CAAC,CAAC;IACN,CAAC,CAAC,OAAOE,EAAE,EAAE;MACT,MAAM,IAAII,6BAAqB,CAACJ,EAAE,EAAEV,KAAK,CAAC;IAC9C;EACJ;AACJ;AAACe,OAAA,CAAAnB,oBAAA,GAAAA,oBAAA","ignoreList":[]}
1
+ {"version":3,"names":["IndexSettingsGetError","IndexSettingsSetError","IndexSettingsManager","constructor","elasticsearch","getSettings","index","response","indices","setting","body","settings","numberOfReplicas","parseInt","String","number_of_replicas","refreshInterval","refresh_interval","ex","setSettings","putSettings"],"sources":["IndexSettingsManager.ts"],"sourcesContent":["import type { Client } from \"@webiny/api-opensearch\";\nimport { IndexSettingsGetError, IndexSettingsSetError } from \"~/errors/index.js\";\nimport type { IIndexSettingsValues } from \"~/types.js\";\n\nexport class IndexSettingsManager {\n private readonly elasticsearch: Client;\n\n public constructor(elasticsearch: Client) {\n this.elasticsearch = elasticsearch;\n }\n\n public async getSettings(index: string): Promise<IIndexSettingsValues> {\n try {\n const response = await this.elasticsearch.indices.getSettings({\n index\n });\n\n const setting = response.body[index]?.settings?.index;\n\n return {\n numberOfReplicas: parseInt(String(setting?.number_of_replicas ?? \"0\"), 10),\n refreshInterval: setting?.refresh_interval ?? \"1s\"\n };\n } catch (ex) {\n throw new IndexSettingsGetError(ex, index);\n }\n }\n\n public async setSettings(index: string, settings: IIndexSettingsValues): Promise<void> {\n try {\n await this.elasticsearch.indices.putSettings({\n index,\n body: {\n index: {\n number_of_replicas: settings.numberOfReplicas,\n refresh_interval: settings.refreshInterval\n }\n }\n });\n } catch (ex) {\n throw new IndexSettingsSetError(ex, index);\n }\n }\n}\n"],"mappings":"AACA,SAASA,qBAAqB,EAAEC,qBAAqB;AAGrD,OAAO,MAAMC,oBAAoB,CAAC;EAGvBC,WAAWA,CAACC,aAAqB,EAAE;IACtC,IAAI,CAACA,aAAa,GAAGA,aAAa;EACtC;EAEA,MAAaC,WAAWA,CAACC,KAAa,EAAiC;IACnE,IAAI;MACA,MAAMC,QAAQ,GAAG,MAAM,IAAI,CAACH,aAAa,CAACI,OAAO,CAACH,WAAW,CAAC;QAC1DC;MACJ,CAAC,CAAC;MAEF,MAAMG,OAAO,GAAGF,QAAQ,CAACG,IAAI,CAACJ,KAAK,CAAC,EAAEK,QAAQ,EAAEL,KAAK;MAErD,OAAO;QACHM,gBAAgB,EAAEC,QAAQ,CAACC,MAAM,CAACL,OAAO,EAAEM,kBAAkB,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;QAC1EC,eAAe,EAAEP,OAAO,EAAEQ,gBAAgB,IAAI;MAClD,CAAC;IACL,CAAC,CAAC,OAAOC,EAAE,EAAE;MACT,MAAM,IAAIlB,qBAAqB,CAACkB,EAAE,EAAEZ,KAAK,CAAC;IAC9C;EACJ;EAEA,MAAaa,WAAWA,CAACb,KAAa,EAAEK,QAA8B,EAAiB;IACnF,IAAI;MACA,MAAM,IAAI,CAACP,aAAa,CAACI,OAAO,CAACY,WAAW,CAAC;QACzCd,KAAK;QACLI,IAAI,EAAE;UACFJ,KAAK,EAAE;YACHS,kBAAkB,EAAEJ,QAAQ,CAACC,gBAAgB;YAC7CK,gBAAgB,EAAEN,QAAQ,CAACK;UAC/B;QACJ;MACJ,CAAC,CAAC;IACN,CAAC,CAAC,OAAOE,EAAE,EAAE;MACT,MAAM,IAAIjB,qBAAqB,CAACiB,EAAE,EAAEZ,KAAK,CAAC;IAC9C;EACJ;AACJ","ignoreList":[]}
@@ -1 +1 @@
1
- export * from "./IndexManager";
1
+ export * from "./IndexManager.js";
package/settings/index.js CHANGED
@@ -1,18 +1,3 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- var _IndexManager = require("./IndexManager");
7
- Object.keys(_IndexManager).forEach(function (key) {
8
- if (key === "default" || key === "__esModule") return;
9
- if (key in exports && exports[key] === _IndexManager[key]) return;
10
- Object.defineProperty(exports, key, {
11
- enumerable: true,
12
- get: function () {
13
- return _IndexManager[key];
14
- }
15
- });
16
- });
1
+ export * from "./IndexManager.js";
17
2
 
18
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_IndexManager","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get"],"sources":["index.ts"],"sourcesContent":["export * from \"./IndexManager\";\n"],"mappings":";;;;;AAAA,IAAAA,aAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,aAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,aAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,aAAA,CAAAK,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./IndexManager.js\";\n"],"mappings":"AAAA","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import type { IElasticsearchIndexingTaskValuesSettings, IIndexSettingsValues } from "../types";
1
+ import type { IElasticsearchIndexingTaskValuesSettings, IIndexSettingsValues } from "../types.js";
2
2
  export interface IIndexManager {
3
3
  settings: IElasticsearchIndexingTaskValuesSettings;
4
4
  list(): Promise<string[]>;
package/settings/types.js CHANGED
@@ -1,7 +1,3 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
1
+ export {};
6
2
 
7
3
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { IElasticsearchIndexingTaskValuesSettings, IIndexSettingsValues } from \"~/types\";\n\nexport interface IIndexManager {\n settings: IElasticsearchIndexingTaskValuesSettings;\n\n list(): Promise<string[]>;\n disableIndexing(index: string): Promise<IIndexSettingsValues>;\n enableIndexing(index?: string): Promise<void>;\n createIndex(index: string, settings?: Record<string, any>): Promise<void>;\n indexExists(index: string): Promise<boolean>;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { IElasticsearchIndexingTaskValuesSettings, IIndexSettingsValues } from \"~/types.js\";\n\nexport interface IIndexManager {\n settings: IElasticsearchIndexingTaskValuesSettings;\n\n list(): Promise<string[]>;\n disableIndexing(index: string): Promise<IIndexSettingsValues>;\n enableIndexing(index?: string): Promise<void>;\n createIndex(index: string, settings?: Record<string, any>): Promise<void>;\n indexExists(index: string): Promise<boolean>;\n}\n"],"mappings":"","ignoreList":[]}
@@ -1,33 +1,23 @@
1
- import type { DynamoDBDocument } from "@webiny/aws-sdk/client-dynamodb";
2
- import type { Client } from "@webiny/api-elasticsearch";
3
- import { createTable } from "../definitions";
4
- import type { Context, IManager } from "../types";
5
- import type { ITaskResponse } from "@webiny/tasks/response/abstractions";
6
- import type { IIsCloseToTimeoutCallable, ITaskManagerStore } from "@webiny/tasks/runner/abstractions";
7
- import type { BatchReadItem, IEntity } from "@webiny/db-dynamodb";
8
- import type { ITimer } from "@webiny/handler-aws/utils";
9
- export interface ManagerParams<T> {
10
- context: Context;
11
- documentClient?: DynamoDBDocument;
12
- elasticsearchClient?: Client;
13
- isCloseToTimeout: IIsCloseToTimeoutCallable;
14
- isAborted: () => boolean;
15
- response: ITaskResponse;
16
- store: ITaskManagerStore<T>;
17
- timer: ITimer;
1
+ import { TaskController } from "@webiny/api-core/features/task/TaskController/index.js";
2
+ import type { DynamoDBDocument } from "@webiny/aws-sdk/client-dynamodb/index.js";
3
+ import type { Client } from "@webiny/api-opensearch";
4
+ import { createOpenSearchTable } from "@webiny/api-opensearch";
5
+ import type { IManager } from "../types.js";
6
+ import type { BatchReadItem } from "@webiny/db-dynamodb/utils/batch/batchRead.js";
7
+ import type { IEntity } from "@webiny/db-dynamodb";
8
+ import { TaskDefinition } from "@webiny/api-core/features/task/TaskDefinition/index.js";
9
+ export interface ManagerParams<T extends TaskDefinition.TaskInput, O extends TaskDefinition.TaskOutput> {
10
+ documentClient: DynamoDBDocument;
11
+ elasticsearchClient: Client;
12
+ controller: TaskController.Interface<T, O>;
18
13
  }
19
- export declare class Manager<T> implements IManager<T> {
14
+ export declare class Manager<T extends TaskDefinition.TaskInput, O extends TaskDefinition.TaskOutput = TaskDefinition.TaskOutput> implements IManager<T, O> {
15
+ readonly controller: TaskController.Interface<T, O>;
20
16
  readonly documentClient: DynamoDBDocument;
21
17
  readonly elasticsearch: Client;
22
- readonly context: Context;
23
- readonly table: ReturnType<typeof createTable>;
24
- readonly isCloseToTimeout: IIsCloseToTimeoutCallable;
25
- readonly isAborted: () => boolean;
26
- readonly response: ITaskResponse;
27
- readonly store: ITaskManagerStore<T>;
28
- readonly timer: ITimer;
18
+ readonly table: ReturnType<typeof createOpenSearchTable>;
29
19
  private readonly entities;
30
- constructor(params: ManagerParams<T>);
20
+ constructor(params: ManagerParams<T, O>);
31
21
  getEntity(name: string): IEntity;
32
22
  read<T>(items: BatchReadItem[]): Promise<T[]>;
33
23
  }
package/tasks/Manager.js CHANGED
@@ -1,51 +1,30 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.Manager = void 0;
7
- var _clientDynamodb = require("@webiny/aws-sdk/client-dynamodb");
8
- var _apiElasticsearch = require("@webiny/api-elasticsearch");
9
- var _definitions = require("../definitions");
10
- var _entry = require("../definitions/entry");
11
- var _dbDynamodb = require("@webiny/db-dynamodb");
12
- class Manager {
1
+ import { createOpenSearchEntity, createOpenSearchTable } from "@webiny/api-opensearch";
2
+ import { batchReadAll } from "@webiny/db-dynamodb/utils/batch/batchRead.js";
3
+ export class Manager {
13
4
  entities = {};
14
5
  constructor(params) {
15
- this.context = params.context;
16
- this.documentClient = params?.documentClient || (0, _clientDynamodb.getDocumentClient)();
17
- this.elasticsearch = params?.elasticsearchClient || params.context.elasticsearch || (0, _apiElasticsearch.createElasticsearchClient)({
18
- endpoint: `https://${process.env.ELASTIC_SEARCH_ENDPOINT}`
19
- });
20
- this.table = (0, _definitions.createTable)({
6
+ this.controller = params.controller;
7
+ this.documentClient = params.documentClient;
8
+ this.elasticsearch = params.elasticsearchClient;
9
+ this.table = createOpenSearchTable({
21
10
  documentClient: this.documentClient
22
11
  });
23
- this.isCloseToTimeout = () => {
24
- return params.isCloseToTimeout();
25
- };
26
- this.isAborted = () => {
27
- return params.isAborted();
28
- };
29
- this.response = params.response;
30
- this.store = params.store;
31
- this.timer = params.timer;
32
12
  }
33
13
  getEntity(name) {
34
14
  if (this.entities[name]) {
35
15
  return this.entities[name];
36
16
  }
37
- return this.entities[name] = (0, _entry.createEntry)({
17
+ return this.entities[name] = createOpenSearchEntity({
38
18
  table: this.table,
39
19
  entityName: name
40
20
  });
41
21
  }
42
22
  async read(items) {
43
- return await (0, _dbDynamodb.batchReadAll)({
44
- table: this.table,
23
+ return await batchReadAll({
24
+ table: this.table.table,
45
25
  items
46
26
  });
47
27
  }
48
28
  }
49
- exports.Manager = Manager;
50
29
 
51
30
  //# sourceMappingURL=Manager.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_clientDynamodb","require","_apiElasticsearch","_definitions","_entry","_dbDynamodb","Manager","entities","constructor","params","context","documentClient","getDocumentClient","elasticsearch","elasticsearchClient","createElasticsearchClient","endpoint","process","env","ELASTIC_SEARCH_ENDPOINT","table","createTable","isCloseToTimeout","isAborted","response","store","timer","getEntity","name","createEntry","entityName","read","items","batchReadAll","exports"],"sources":["Manager.ts"],"sourcesContent":["import type { DynamoDBDocument } from \"@webiny/aws-sdk/client-dynamodb\";\nimport { getDocumentClient } from \"@webiny/aws-sdk/client-dynamodb\";\nimport type { Client } from \"@webiny/api-elasticsearch\";\nimport { createElasticsearchClient } from \"@webiny/api-elasticsearch\";\nimport { createTable } from \"~/definitions\";\nimport type { Context, IManager } from \"~/types\";\nimport { createEntry } from \"~/definitions/entry\";\nimport type { ITaskResponse } from \"@webiny/tasks/response/abstractions\";\nimport type {\n IIsCloseToTimeoutCallable,\n ITaskManagerStore\n} from \"@webiny/tasks/runner/abstractions\";\nimport type { BatchReadItem, IEntity } from \"@webiny/db-dynamodb\";\nimport { batchReadAll } from \"@webiny/db-dynamodb\";\nimport type { ITimer } from \"@webiny/handler-aws/utils\";\n\nexport interface ManagerParams<T> {\n context: Context;\n documentClient?: DynamoDBDocument;\n elasticsearchClient?: Client;\n isCloseToTimeout: IIsCloseToTimeoutCallable;\n isAborted: () => boolean;\n response: ITaskResponse;\n store: ITaskManagerStore<T>;\n timer: ITimer;\n}\n\nexport class Manager<T> implements IManager<T> {\n public readonly documentClient: DynamoDBDocument;\n public readonly elasticsearch: Client;\n public readonly context: Context;\n public readonly table: ReturnType<typeof createTable>;\n public readonly isCloseToTimeout: IIsCloseToTimeoutCallable;\n public readonly isAborted: () => boolean;\n public readonly response: ITaskResponse;\n public readonly store: ITaskManagerStore<T>;\n public readonly timer: ITimer;\n\n private readonly entities: Record<string, IEntity> = {};\n\n public constructor(params: ManagerParams<T>) {\n this.context = params.context;\n this.documentClient = params?.documentClient || getDocumentClient();\n\n this.elasticsearch =\n params?.elasticsearchClient ||\n params.context.elasticsearch ||\n createElasticsearchClient({\n endpoint: `https://${process.env.ELASTIC_SEARCH_ENDPOINT}`\n });\n\n this.table = createTable({\n documentClient: this.documentClient\n });\n this.isCloseToTimeout = () => {\n return params.isCloseToTimeout();\n };\n this.isAborted = () => {\n return params.isAborted();\n };\n this.response = params.response;\n this.store = params.store;\n this.timer = params.timer;\n }\n\n public getEntity(name: string): IEntity {\n if (this.entities[name]) {\n return this.entities[name];\n }\n\n return (this.entities[name] = createEntry({\n table: this.table,\n entityName: name\n }));\n }\n\n public async read<T>(items: BatchReadItem[]): Promise<T[]> {\n return await batchReadAll<T>({\n table: this.table,\n items\n });\n }\n}\n"],"mappings":";;;;;;AACA,IAAAA,eAAA,GAAAC,OAAA;AAEA,IAAAC,iBAAA,GAAAD,OAAA;AACA,IAAAE,YAAA,GAAAF,OAAA;AAEA,IAAAG,MAAA,GAAAH,OAAA;AAOA,IAAAI,WAAA,GAAAJ,OAAA;AAcO,MAAMK,OAAO,CAA2B;EAW1BC,QAAQ,GAA4B,CAAC,CAAC;EAEhDC,WAAWA,CAACC,MAAwB,EAAE;IACzC,IAAI,CAACC,OAAO,GAAGD,MAAM,CAACC,OAAO;IAC7B,IAAI,CAACC,cAAc,GAAGF,MAAM,EAAEE,cAAc,IAAI,IAAAC,iCAAiB,EAAC,CAAC;IAEnE,IAAI,CAACC,aAAa,GACdJ,MAAM,EAAEK,mBAAmB,IAC3BL,MAAM,CAACC,OAAO,CAACG,aAAa,IAC5B,IAAAE,2CAAyB,EAAC;MACtBC,QAAQ,EAAE,WAAWC,OAAO,CAACC,GAAG,CAACC,uBAAuB;IAC5D,CAAC,CAAC;IAEN,IAAI,CAACC,KAAK,GAAG,IAAAC,wBAAW,EAAC;MACrBV,cAAc,EAAE,IAAI,CAACA;IACzB,CAAC,CAAC;IACF,IAAI,CAACW,gBAAgB,GAAG,MAAM;MAC1B,OAAOb,MAAM,CAACa,gBAAgB,CAAC,CAAC;IACpC,CAAC;IACD,IAAI,CAACC,SAAS,GAAG,MAAM;MACnB,OAAOd,MAAM,CAACc,SAAS,CAAC,CAAC;IAC7B,CAAC;IACD,IAAI,CAACC,QAAQ,GAAGf,MAAM,CAACe,QAAQ;IAC/B,IAAI,CAACC,KAAK,GAAGhB,MAAM,CAACgB,KAAK;IACzB,IAAI,CAACC,KAAK,GAAGjB,MAAM,CAACiB,KAAK;EAC7B;EAEOC,SAASA,CAACC,IAAY,EAAW;IACpC,IAAI,IAAI,CAACrB,QAAQ,CAACqB,IAAI,CAAC,EAAE;MACrB,OAAO,IAAI,CAACrB,QAAQ,CAACqB,IAAI,CAAC;IAC9B;IAEA,OAAQ,IAAI,CAACrB,QAAQ,CAACqB,IAAI,CAAC,GAAG,IAAAC,kBAAW,EAAC;MACtCT,KAAK,EAAE,IAAI,CAACA,KAAK;MACjBU,UAAU,EAAEF;IAChB,CAAC,CAAC;EACN;EAEA,MAAaG,IAAIA,CAAIC,KAAsB,EAAgB;IACvD,OAAO,MAAM,IAAAC,wBAAY,EAAI;MACzBb,KAAK,EAAE,IAAI,CAACA,KAAK;MACjBY;IACJ,CAAC,CAAC;EACN;AACJ;AAACE,OAAA,CAAA5B,OAAA,GAAAA,OAAA","ignoreList":[]}
1
+ {"version":3,"names":["createOpenSearchEntity","createOpenSearchTable","batchReadAll","Manager","entities","constructor","params","controller","documentClient","elasticsearch","elasticsearchClient","table","getEntity","name","entityName","read","items"],"sources":["Manager.ts"],"sourcesContent":["import { TaskController } from \"@webiny/api-core/features/task/TaskController/index.js\";\nimport type { DynamoDBDocument } from \"@webiny/aws-sdk/client-dynamodb/index.js\";\nimport type { Client } from \"@webiny/api-opensearch\";\nimport { createOpenSearchEntity, createOpenSearchTable } from \"@webiny/api-opensearch\";\nimport type { IManager } from \"~/types.js\";\nimport type { BatchReadItem } from \"@webiny/db-dynamodb/utils/batch/batchRead.js\";\nimport { batchReadAll } from \"@webiny/db-dynamodb/utils/batch/batchRead.js\";\nimport type { IEntity } from \"@webiny/db-dynamodb\";\nimport { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\n\nexport interface ManagerParams<\n T extends TaskDefinition.TaskInput,\n O extends TaskDefinition.TaskOutput\n> {\n documentClient: DynamoDBDocument;\n elasticsearchClient: Client;\n controller: TaskController.Interface<T, O>;\n}\n\nexport class Manager<\n T extends TaskDefinition.TaskInput,\n O extends TaskDefinition.TaskOutput = TaskDefinition.TaskOutput\n> implements IManager<T, O> {\n public readonly controller: TaskController.Interface<T, O>;\n public readonly documentClient: DynamoDBDocument;\n public readonly elasticsearch: Client;\n public readonly table: ReturnType<typeof createOpenSearchTable>;\n\n private readonly entities: Record<string, IEntity> = {};\n\n public constructor(params: ManagerParams<T, O>) {\n this.controller = params.controller;\n this.documentClient = params.documentClient;\n this.elasticsearch = params.elasticsearchClient;\n\n this.table = createOpenSearchTable({\n documentClient: this.documentClient\n });\n }\n\n public getEntity(name: string): IEntity {\n if (this.entities[name]) {\n return this.entities[name];\n }\n\n return (this.entities[name] = createOpenSearchEntity({\n table: this.table,\n entityName: name\n }));\n }\n\n public async read<T>(items: BatchReadItem[]): Promise<T[]> {\n return await batchReadAll<T>({\n table: this.table.table,\n items\n });\n }\n}\n"],"mappings":"AAGA,SAASA,sBAAsB,EAAEC,qBAAqB,QAAQ,wBAAwB;AAGtF,SAASC,YAAY,QAAQ,8CAA8C;AAa3E,OAAO,MAAMC,OAAO,CAGQ;EAMPC,QAAQ,GAA4B,CAAC,CAAC;EAEhDC,WAAWA,CAACC,MAA2B,EAAE;IAC5C,IAAI,CAACC,UAAU,GAAGD,MAAM,CAACC,UAAU;IACnC,IAAI,CAACC,cAAc,GAAGF,MAAM,CAACE,cAAc;IAC3C,IAAI,CAACC,aAAa,GAAGH,MAAM,CAACI,mBAAmB;IAE/C,IAAI,CAACC,KAAK,GAAGV,qBAAqB,CAAC;MAC/BO,cAAc,EAAE,IAAI,CAACA;IACzB,CAAC,CAAC;EACN;EAEOI,SAASA,CAACC,IAAY,EAAW;IACpC,IAAI,IAAI,CAACT,QAAQ,CAACS,IAAI,CAAC,EAAE;MACrB,OAAO,IAAI,CAACT,QAAQ,CAACS,IAAI,CAAC;IAC9B;IAEA,OAAQ,IAAI,CAACT,QAAQ,CAACS,IAAI,CAAC,GAAGb,sBAAsB,CAAC;MACjDW,KAAK,EAAE,IAAI,CAACA,KAAK;MACjBG,UAAU,EAAED;IAChB,CAAC,CAAC;EACN;EAEA,MAAaE,IAAIA,CAAIC,KAAsB,EAAgB;IACvD,OAAO,MAAMd,YAAY,CAAI;MACzBS,KAAK,EAAE,IAAI,CAACA,KAAK,CAACA,KAAK;MACvBK;IACJ,CAAC,CAAC;EACN;AACJ","ignoreList":[]}
@@ -0,0 +1,23 @@
1
+ import { TaskDefinition } from "@webiny/api-core/features/task/TaskDefinition/index.js";
2
+ import type { IElasticsearchCreateIndexesTaskInput } from "../../tasks/createIndexes/types.js";
3
+ import type { IElasticsearchTaskConfig } from "../../types.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 { OpensearchTenantIndexFactory } from "../../abstractions/OpensearchTenantIndexFactory.js";
7
+ export declare class CreateIndexesTaskDefinition implements TaskDefinition.Interface<IElasticsearchCreateIndexesTaskInput> {
8
+ private elasticsearchClient;
9
+ private documentClient;
10
+ private tenantContext;
11
+ private listTenantsUseCase;
12
+ private indexFactories;
13
+ id: string;
14
+ title: string;
15
+ /**
16
+ * Maximum number of iterations before the task goes into the error state.
17
+ * No point in having more than 2 runs, as the create index operations should not even take 1 full run, no matter how much indexes is there to create.
18
+ */
19
+ maxIterations: number;
20
+ constructor(elasticsearchClient: IElasticsearchTaskConfig["elasticsearchClient"], documentClient: IElasticsearchTaskConfig["documentClient"], tenantContext: TenantContext.Interface, listTenantsUseCase: ListTenantsUseCase.Interface, indexFactories: OpensearchTenantIndexFactory.Interface[]);
21
+ run({ input, controller }: TaskDefinition.RunParams<IElasticsearchCreateIndexesTaskInput>): Promise<TaskDefinition.Result<import("@webiny/api-core/features/task/TaskDefinition/abstractions.js").ITaskInput, import("@webiny/api-core/features/task/TaskDefinition/abstractions.js").ITaskOutput>>;
22
+ onBeforeTrigger(): Promise<void>;
23
+ }
@@ -0,0 +1,53 @@
1
+ import { CreateIndexesTaskRunner } from "./CreateIndexesTaskRunner.js";
2
+ export class CreateIndexesTaskDefinition {
3
+ id = "elasticsearchCreateIndexes";
4
+ title = "Create Missing Elasticsearch Indexes";
5
+ /**
6
+ * Maximum number of iterations before the task goes into the error state.
7
+ * No point in having more than 2 runs, as the create index operations should not even take 1 full run, no matter how much indexes is there to create.
8
+ */
9
+ maxIterations = 2;
10
+ constructor(elasticsearchClient, documentClient, tenantContext, listTenantsUseCase, indexFactories) {
11
+ this.elasticsearchClient = elasticsearchClient;
12
+ this.documentClient = documentClient;
13
+ this.tenantContext = tenantContext;
14
+ this.listTenantsUseCase = listTenantsUseCase;
15
+ this.indexFactories = indexFactories;
16
+ }
17
+ async run({
18
+ input,
19
+ controller
20
+ }) {
21
+ if (controller.runtime.isAborted()) {
22
+ return controller.response.aborted();
23
+ }
24
+ const {
25
+ Manager
26
+ } = await import(/* webpackChunkName: "Manager" */"../Manager.js");
27
+ const {
28
+ IndexManager
29
+ } = await import(/* webpackChunkName: "IndexManager" */"../../settings/index.js");
30
+ const manager = new Manager({
31
+ elasticsearchClient: this.elasticsearchClient,
32
+ documentClient: this.documentClient,
33
+ controller
34
+ });
35
+ const indexManager = new IndexManager(manager.elasticsearch, {});
36
+ const createIndexesTaskRunner = new CreateIndexesTaskRunner(this.tenantContext, this.listTenantsUseCase, this.indexFactories, manager, indexManager);
37
+ return createIndexesTaskRunner.execute(input.matching, Array.from(input.done || []));
38
+ }
39
+ async onBeforeTrigger() {
40
+ // Let's create a new index for the tasks first.
41
+ const {
42
+ IndexManager
43
+ } = await import(/* webpackChunkName: "IndexManager" */"../../settings/index.js");
44
+ const indexManager = new IndexManager(this.elasticsearchClient, {});
45
+ const {
46
+ OnBeforeTrigger
47
+ } = await import(/* webpackChunkName: "OnBeforeTrigger" */"./OnBeforeTrigger.js");
48
+ const onBeforeTrigger = new OnBeforeTrigger(indexManager, this.tenantContext, this.indexFactories);
49
+ await onBeforeTrigger.run(["wbytask"]);
50
+ }
51
+ }
52
+
53
+ //# sourceMappingURL=CreateIndexesTask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CreateIndexesTaskRunner","CreateIndexesTaskDefinition","id","title","maxIterations","constructor","elasticsearchClient","documentClient","tenantContext","listTenantsUseCase","indexFactories","run","input","controller","runtime","isAborted","response","aborted","Manager","IndexManager","manager","indexManager","elasticsearch","createIndexesTaskRunner","execute","matching","Array","from","done","onBeforeTrigger","OnBeforeTrigger"],"sources":["CreateIndexesTask.ts"],"sourcesContent":["import { TaskDefinition } from \"@webiny/api-core/features/task/TaskDefinition/index.js\";\nimport type { IElasticsearchCreateIndexesTaskInput } from \"~/tasks/createIndexes/types.js\";\nimport type { IElasticsearchTaskConfig } from \"~/types.js\";\nimport { CreateIndexesTaskRunner } from \"~/tasks/createIndexes/CreateIndexesTaskRunner.js\";\nimport { TenantContext } from \"@webiny/api-core/features/tenancy/TenantContext/index.js\";\nimport { ListTenantsUseCase } from \"@webiny/api-core/features/tenancy/ListTenants/index.js\";\nimport { OpensearchTenantIndexFactory } from \"~/abstractions/OpensearchTenantIndexFactory.js\";\n\nexport class CreateIndexesTaskDefinition implements TaskDefinition.Interface<IElasticsearchCreateIndexesTaskInput> {\n id = \"elasticsearchCreateIndexes\";\n title = \"Create Missing Elasticsearch Indexes\";\n /**\n * Maximum number of iterations before the task goes into the error state.\n * No point in having more than 2 runs, as the create index operations should not even take 1 full run, no matter how much indexes is there to create.\n */\n maxIterations = 2;\n\n constructor(\n private elasticsearchClient: IElasticsearchTaskConfig[\"elasticsearchClient\"],\n private documentClient: IElasticsearchTaskConfig[\"documentClient\"],\n private tenantContext: TenantContext.Interface,\n private listTenantsUseCase: ListTenantsUseCase.Interface,\n private indexFactories: OpensearchTenantIndexFactory.Interface[]\n ) {}\n\n async run({\n input,\n controller\n }: TaskDefinition.RunParams<IElasticsearchCreateIndexesTaskInput>) {\n if (controller.runtime.isAborted()) {\n return controller.response.aborted();\n }\n\n const { Manager } = await import(\n /* webpackChunkName: \"Manager\" */\n \"../Manager.js\"\n );\n const { IndexManager } = await import(\n /* webpackChunkName: \"IndexManager\" */ \"~/settings/index.js\"\n );\n\n const manager = new Manager<IElasticsearchCreateIndexesTaskInput>({\n elasticsearchClient: this.elasticsearchClient,\n documentClient: this.documentClient,\n controller\n });\n\n const indexManager = new IndexManager(manager.elasticsearch, {});\n\n const createIndexesTaskRunner = new CreateIndexesTaskRunner(\n this.tenantContext,\n this.listTenantsUseCase,\n this.indexFactories,\n manager,\n indexManager\n );\n\n return createIndexesTaskRunner.execute(input.matching, Array.from(input.done || []));\n }\n\n async onBeforeTrigger() {\n // Let's create a new index for the tasks first.\n const { IndexManager } = await import(\n /* webpackChunkName: \"IndexManager\" */ \"~/settings/index.js\"\n );\n const indexManager = new IndexManager(this.elasticsearchClient, {});\n const { OnBeforeTrigger } = await import(\n /* webpackChunkName: \"OnBeforeTrigger\" */\n \"./OnBeforeTrigger.js\"\n );\n\n const onBeforeTrigger = new OnBeforeTrigger(\n indexManager,\n this.tenantContext,\n this.indexFactories\n );\n await onBeforeTrigger.run([\"wbytask\"]);\n }\n}\n"],"mappings":"AAGA,SAASA,uBAAuB;AAKhC,OAAO,MAAMC,2BAA2B,CAA2E;EAC/GC,EAAE,GAAG,4BAA4B;EACjCC,KAAK,GAAG,sCAAsC;EAC9C;AACJ;AACA;AACA;EACIC,aAAa,GAAG,CAAC;EAEjBC,WAAWA,CACCC,mBAAoE,EACpEC,cAA0D,EAC1DC,aAAsC,EACtCC,kBAAgD,EAChDC,cAAwD,EAClE;IAAA,KALUJ,mBAAoE,GAApEA,mBAAoE;IAAA,KACpEC,cAA0D,GAA1DA,cAA0D;IAAA,KAC1DC,aAAsC,GAAtCA,aAAsC;IAAA,KACtCC,kBAAgD,GAAhDA,kBAAgD;IAAA,KAChDC,cAAwD,GAAxDA,cAAwD;EACjE;EAEH,MAAMC,GAAGA,CAAC;IACNC,KAAK;IACLC;EAC4D,CAAC,EAAE;IAC/D,IAAIA,UAAU,CAACC,OAAO,CAACC,SAAS,CAAC,CAAC,EAAE;MAChC,OAAOF,UAAU,CAACG,QAAQ,CAACC,OAAO,CAAC,CAAC;IACxC;IAEA,MAAM;MAAEC;IAAQ,CAAC,GAAG,MAAM,MAAM,CAC5B,gDAEJ,CAAC;IACD,MAAM;MAAEC;IAAa,CAAC,GAAG,MAAM,MAAM,CACjC,+DACJ,CAAC;IAED,MAAMC,OAAO,GAAG,IAAIF,OAAO,CAAuC;MAC9DZ,mBAAmB,EAAE,IAAI,CAACA,mBAAmB;MAC7CC,cAAc,EAAE,IAAI,CAACA,cAAc;MACnCM;IACJ,CAAC,CAAC;IAEF,MAAMQ,YAAY,GAAG,IAAIF,YAAY,CAACC,OAAO,CAACE,aAAa,EAAE,CAAC,CAAC,CAAC;IAEhE,MAAMC,uBAAuB,GAAG,IAAIvB,uBAAuB,CACvD,IAAI,CAACQ,aAAa,EAClB,IAAI,CAACC,kBAAkB,EACvB,IAAI,CAACC,cAAc,EACnBU,OAAO,EACPC,YACJ,CAAC;IAED,OAAOE,uBAAuB,CAACC,OAAO,CAACZ,KAAK,CAACa,QAAQ,EAAEC,KAAK,CAACC,IAAI,CAACf,KAAK,CAACgB,IAAI,IAAI,EAAE,CAAC,CAAC;EACxF;EAEA,MAAMC,eAAeA,CAAA,EAAG;IACpB;IACA,MAAM;MAAEV;IAAa,CAAC,GAAG,MAAM,MAAM,CACjC,+DACJ,CAAC;IACD,MAAME,YAAY,GAAG,IAAIF,YAAY,CAAC,IAAI,CAACb,mBAAmB,EAAE,CAAC,CAAC,CAAC;IACnE,MAAM;MAAEwB;IAAgB,CAAC,GAAG,MAAM,MAAM,CACpC,+DAEJ,CAAC;IAED,MAAMD,eAAe,GAAG,IAAIC,eAAe,CACvCT,YAAY,EACZ,IAAI,CAACb,aAAa,EAClB,IAAI,CAACE,cACT,CAAC;IACD,MAAMmB,eAAe,CAAClB,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;EAC1C;AACJ","ignoreList":[]}
@@ -1,10 +1,16 @@
1
- import type { Manager } from "../Manager";
2
- import type { IndexManager } from "../../settings";
3
- import type { ITaskResponseResult } from "@webiny/tasks";
4
- import type { IElasticsearchCreateIndexesTaskInput } from "./types";
1
+ import type { Manager } from "../../tasks/Manager.js";
2
+ import type { IndexManager } from "../../settings/index.js";
3
+ import type { IElasticsearchCreateIndexesTaskInput } from "./types.js";
4
+ import { TaskDefinition } from "@webiny/api-core/features/task/TaskDefinition/index.js";
5
+ import { TenantContext } from "@webiny/api-core/features/tenancy/TenantContext/index.js";
6
+ import { OpensearchTenantIndexFactory } from "../../abstractions/OpensearchTenantIndexFactory.js";
7
+ import { ListTenantsUseCase } from "@webiny/api-core/features/tenancy/ListTenants/index.js";
5
8
  export declare class CreateIndexesTaskRunner {
6
- private readonly manager;
7
- private readonly indexManager;
8
- constructor(manager: Manager<IElasticsearchCreateIndexesTaskInput>, indexManager: IndexManager);
9
- execute(matching: string | undefined, done: string[]): Promise<ITaskResponseResult>;
9
+ private tenantContext;
10
+ private listTenantsUseCase;
11
+ private indexFactories;
12
+ private indexManager;
13
+ private taskController;
14
+ constructor(tenantContext: TenantContext.Interface, listTenantsUseCase: ListTenantsUseCase.Interface, indexFactories: OpensearchTenantIndexFactory.Interface[], manager: Manager<IElasticsearchCreateIndexesTaskInput>, indexManager: IndexManager);
15
+ execute(matching: string | undefined, done: string[]): Promise<TaskDefinition.Result>;
10
16
  }
@@ -1,28 +1,22 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.CreateIndexesTaskRunner = void 0;
7
- var _listIndexes = require("./listIndexes");
8
- var _createIndex = require("./createIndex");
9
- var _listCreateElasticsearchIndexTaskPlugin = require("./listCreateElasticsearchIndexTaskPlugin");
10
- class CreateIndexesTaskRunner {
11
- constructor(manager, indexManager) {
12
- this.manager = manager;
1
+ import { listIndexes } from "./listIndexes.js";
2
+ import { createIndexFactory } from "./createIndex.js";
3
+ export class CreateIndexesTaskRunner {
4
+ constructor(tenantContext, listTenantsUseCase, indexFactories, manager, indexManager) {
5
+ this.tenantContext = tenantContext;
6
+ this.listTenantsUseCase = listTenantsUseCase;
7
+ this.indexFactories = indexFactories;
13
8
  this.indexManager = indexManager;
9
+ this.taskController = manager.controller;
14
10
  }
15
11
  async execute(matching, done) {
16
- const plugins = (0, _listCreateElasticsearchIndexTaskPlugin.listCreateElasticsearchIndexTaskPlugin)(this.manager.context.plugins);
17
- if (plugins.length === 0) {
18
- return this.manager.response.done("No index plugins found.");
12
+ if (this.indexFactories.length === 0) {
13
+ return this.taskController.response.done("No index plugins found.");
19
14
  }
20
- const indexes = await (0, _listIndexes.listIndexes)({
21
- context: this.manager.context,
22
- plugins
23
- });
15
+ const tenantsResult = await this.listTenantsUseCase.execute();
16
+ const tenants = tenantsResult.value;
17
+ const indexes = await listIndexes(this.tenantContext, tenants, this.indexFactories);
24
18
  if (indexes.length === 0) {
25
- return this.manager.response.done("No indexes found.");
19
+ return this.taskController.response.done("No indexes found.");
26
20
  }
27
21
  const isIndexAllowed = index => {
28
22
  if (typeof matching !== "string" || !matching) {
@@ -30,15 +24,15 @@ class CreateIndexesTaskRunner {
30
24
  }
31
25
  return index.includes(matching);
32
26
  };
33
- const createIndex = (0, _createIndex.createIndexFactory)(this.indexManager);
27
+ const createIndex = createIndexFactory(this.indexManager);
34
28
  for (const {
35
29
  index,
36
30
  settings
37
31
  } of indexes) {
38
- if (this.manager.isAborted()) {
39
- return this.manager.response.aborted();
40
- } else if (this.manager.isCloseToTimeout()) {
41
- return this.manager.response.continue({
32
+ if (this.taskController.runtime.isAborted()) {
33
+ return this.taskController.response.aborted();
34
+ } else if (this.taskController.runtime.isCloseToTimeout()) {
35
+ return this.taskController.response.continue({
42
36
  done
43
37
  });
44
38
  }
@@ -54,24 +48,23 @@ class CreateIndexesTaskRunner {
54
48
  }
55
49
  done.push(index);
56
50
  await createIndex.create(index, settings);
57
- await this.manager.store.addInfoLog({
51
+ await this.taskController.logger.info({
58
52
  message: `Index "${index}" created.`,
59
53
  data: {
60
54
  index
61
55
  }
62
56
  });
63
57
  } catch (ex) {
64
- await this.manager.store.addErrorLog({
58
+ await this.taskController.logger.error({
65
59
  message: `Failed to create index "${index}".`,
66
60
  error: ex
67
61
  });
68
62
  }
69
63
  }
70
- return this.manager.response.done("Indexes created.", {
64
+ return this.taskController.response.done("Indexes created.", {
71
65
  done
72
66
  });
73
67
  }
74
68
  }
75
- exports.CreateIndexesTaskRunner = CreateIndexesTaskRunner;
76
69
 
77
70
  //# sourceMappingURL=CreateIndexesTaskRunner.js.map