UNPKG

@webiny/api-headless-cms-ddb-es

Version:

DynamoDB and Elasticsearch storage operations plugin for Headless CMS API.

48 lines (47 loc) 1.52 kB
import { OpensearchTenantIndexFactory } from "@webiny/api-elasticsearch-tasks"; import { ListModelsUseCase } from "@webiny/api-headless-cms/features/contentModel/ListModels/index.js"; import { configurations } from "../configurations.js"; import { CmsEntryOpenSearchIndex } from "../features/CmsEntryOpenSearchIndex/index.js"; class CreateElasticsearchIndexTask { constructor(context, listModels) { this.context = context; this.listModels = listModels; } async getIndexList(tenant) { const result = await this.listModels.execute(); const models = result.value; if (models.length === 0) { return []; } const indexConfigs = this.context.container.resolveAll(CmsEntryOpenSearchIndex); const indexes = models.map(model => { const { index } = configurations.es({ model: { modelId: model.modelId, tenant: tenant.id } }); return { index, settings: configurations.indexSettings({ indexConfigs, model: { modelId: model.modelId, tenant: tenant.id, group: model.group } }) }; }); return indexes; } } export const createCreateIndexTask = context => { context.container.registerFactory(OpensearchTenantIndexFactory, () => { const listModels = context.container.resolve(ListModelsUseCase); return new CreateElasticsearchIndexTask(context, listModels); }); }; //# sourceMappingURL=createIndexTaskPlugin.js.map