@webiny/api-headless-cms-ddb-es
Version:
DynamoDB and Elasticsearch storage operations plugin for Headless CMS API.
48 lines (47 loc) • 1.52 kB
JavaScript
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