cceeb6ed4d
## Context - All flatEntity should extend SyncableEntity - SyncableEntity should now have applicationId and application relation - Fix syncApp deletion, should now properly use migration v2 to delete syncable entities
62 lines
2.6 KiB
TypeScript
62 lines
2.6 KiB
TypeScript
import { Injectable } from '@nestjs/common';
|
|
import { InjectRepository } from '@nestjs/typeorm';
|
|
|
|
import { removePropertiesFromRecord } from 'twenty-shared/utils';
|
|
import { Repository } from 'typeorm';
|
|
|
|
import { InjectCacheStorage } from 'src/engine/core-modules/cache-storage/decorators/cache-storage.decorator';
|
|
import { CacheStorageService } from 'src/engine/core-modules/cache-storage/services/cache-storage.service';
|
|
import { CacheStorageNamespace } from 'src/engine/core-modules/cache-storage/types/cache-storage-namespace.enum';
|
|
import { EMPTY_FLAT_ENTITY_MAPS } from 'src/engine/metadata-modules/flat-entity/constant/empty-flat-entity-maps.constant';
|
|
import { FlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types/flat-entity-maps.type';
|
|
import { addFlatEntityToFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/add-flat-entity-to-flat-entity-maps-or-throw.util';
|
|
import {
|
|
ROUTE_TRIGGER_ENTITY_RELATION_PROPERTIES,
|
|
RouteTrigger,
|
|
} from 'src/engine/metadata-modules/route-trigger/route-trigger.entity';
|
|
import { FlatRouteTrigger } from 'src/engine/metadata-modules/route-trigger/types/flat-route-trigger.type';
|
|
import { WorkspaceFlatMapCache } from 'src/engine/workspace-flat-map-cache/decorators/workspace-flat-map-cache.decorator';
|
|
import { WorkspaceFlatMapCacheService } from 'src/engine/workspace-flat-map-cache/services/workspace-flat-map-cache.service';
|
|
|
|
@Injectable()
|
|
@WorkspaceFlatMapCache('flatRouteTriggerMaps')
|
|
export class WorkspaceFlatRouteTriggerMapCacheService extends WorkspaceFlatMapCacheService<
|
|
FlatEntityMaps<FlatRouteTrigger>
|
|
> {
|
|
constructor(
|
|
@InjectCacheStorage(CacheStorageNamespace.EngineWorkspace)
|
|
cacheStorageService: CacheStorageService,
|
|
@InjectRepository(RouteTrigger)
|
|
private readonly routeTriggerRepository: Repository<RouteTrigger>,
|
|
) {
|
|
super(cacheStorageService);
|
|
}
|
|
|
|
protected async computeFlatMap({
|
|
workspaceId,
|
|
}: {
|
|
workspaceId: string;
|
|
}): Promise<FlatEntityMaps<FlatRouteTrigger>> {
|
|
const routeTriggers = await this.routeTriggerRepository.find({
|
|
where: {
|
|
workspaceId,
|
|
},
|
|
});
|
|
|
|
return routeTriggers.reduce((flatRouteTriggerMaps, routeTriggerEntity) => {
|
|
const flatRouteTrigger = {
|
|
...removePropertiesFromRecord(routeTriggerEntity, [
|
|
...ROUTE_TRIGGER_ENTITY_RELATION_PROPERTIES,
|
|
]),
|
|
universalIdentifier:
|
|
routeTriggerEntity.universalIdentifier ?? routeTriggerEntity.id,
|
|
} satisfies FlatRouteTrigger;
|
|
|
|
return addFlatEntityToFlatEntityMapsOrThrow({
|
|
flatEntity: flatRouteTrigger,
|
|
flatEntityMaps: flatRouteTriggerMaps,
|
|
});
|
|
}, EMPTY_FLAT_ENTITY_MAPS);
|
|
}
|
|
}
|