diff --git a/app/api/entities.v2/contracts/EntitiesDataSource.ts b/app/api/entities.v2/contracts/EntitiesDataSource.ts index 2ce9d83b24..1c96a94e2d 100644 --- a/app/api/entities.v2/contracts/EntitiesDataSource.ts +++ b/app/api/entities.v2/contracts/EntitiesDataSource.ts @@ -6,6 +6,7 @@ type MarkAsChangedData = { property: string } | { properties: string[] }; export type MarkAsChangedItems = MarkAsChangedCriteria & MarkAsChangedData; export interface EntitiesDataSource { + updateEntities_OnlyUpdateAndReindex(entity: Entity): Promise; updateEntity(entity: Entity): Promise; updateObsoleteMetadataValues( id: Entity['_id'], diff --git a/app/api/entities.v2/database/MongoEntitiesDataSource.ts b/app/api/entities.v2/database/MongoEntitiesDataSource.ts index e8f9ff67a3..7dea6751b4 100644 --- a/app/api/entities.v2/database/MongoEntitiesDataSource.ts +++ b/app/api/entities.v2/database/MongoEntitiesDataSource.ts @@ -4,6 +4,7 @@ import { MongoIdHandler } from 'api/common.v2/database/MongoIdGenerator'; import { MongoResultSet } from 'api/common.v2/database/MongoResultSet'; import { MongoTransactionManager } from 'api/common.v2/database/MongoTransactionManager'; import entities from 'api/entities/entities'; +import v1EntitiesModel from 'api/entities/entitiesModel'; import { MongoSettingsDataSource } from 'api/settings.v2/database/MongoSettingsDataSource'; import { MongoTemplatesDataSource } from 'api/templates.v2/database/MongoTemplatesDataSource'; import { Db } from 'mongodb'; @@ -12,6 +13,7 @@ import { EntitiesDataSource } from '../contracts/EntitiesDataSource'; import { Entity, EntityMetadata, MetadataValue } from '../model/Entity'; import { EntityMappers } from './EntityMapper'; import { EntityDBO, EntityJoinTemplate } from './schemas/EntityTypes'; +import { search } from 'api/search'; export class MongoEntitiesDataSource extends MongoDataSource @@ -34,6 +36,21 @@ export class MongoEntitiesDataSource this.settingsDS = settingsDS; } + // eslint-disable-next-line class-methods-use-this + async updateEntities_OnlyUpdateAndReindex(entity: Entity) { + // This is using V1 model and custom reindex here + // this is a hack and should be changed as soon as we finish AT + const entityToModify = await entities.getById(entity._id); + if (!entityToModify) { + throw new Error(`entity does not exists: ${entity._id}`); + } + + entityToModify.title = entity.title; + entityToModify.metadata = entity.metadata as MetadataSchema; + await v1EntitiesModel.save(entityToModify); + await search.indexEntities({ sharedId: entity.sharedId }); + } + // eslint-disable-next-line class-methods-use-this async updateEntity(entity: Entity) { // This is using V1 so that it gets denormalized to speed up development diff --git a/app/api/externalIntegrations.v2/automaticTranslation/RequestEntityTranslation.ts b/app/api/externalIntegrations.v2/automaticTranslation/RequestEntityTranslation.ts index 5b54afbc45..c613477a95 100644 --- a/app/api/externalIntegrations.v2/automaticTranslation/RequestEntityTranslation.ts +++ b/app/api/externalIntegrations.v2/automaticTranslation/RequestEntityTranslation.ts @@ -101,7 +101,7 @@ export class RequestEntityTranslation { await Promise.all( updatedEntities.map(async updatedEntity => { this.logger.info(`[AT] - Pending translation saved on DB for entity - ${entity._id}`); - await this.entitiesDS.updateEntity(updatedEntity); + await this.entitiesDS.updateEntities_OnlyUpdateAndReindex(updatedEntity); }) ); }