7d747c9876
# Introduction Adding view-group to core engine v2 Following https://github.com/twentyhq/twenty/pull/15010 ( same pattern ) ## What's done - Created flat-view-group - flat view group runner - flat view group builder - create view group service v2 and input transpilers - refactor the existing view group resolver to fix standard ( BREAKING_CHANGE on graphql api update especially ) REST stays the same - refactored the front to consume the mutations autogenerated close https://github.com/twentyhq/core-team-issues/issues/1665
51 lines
2.4 KiB
TypeScript
51 lines
2.4 KiB
TypeScript
import { Injectable } from '@nestjs/common';
|
|
import { InjectRepository } from '@nestjs/typeorm';
|
|
|
|
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 { addFlatEntityToFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/add-flat-entity-to-flat-entity-maps-or-throw.util';
|
|
import { FlatViewGroupMaps } from 'src/engine/metadata-modules/flat-view-group/types/flat-view-group-maps.type';
|
|
import { fromViewGroupEntityToFlatViewGroup } from 'src/engine/metadata-modules/flat-view-group/utils/from-view-group-entity-to-flat-view-group.util';
|
|
import { ViewGroupEntity } from 'src/engine/metadata-modules/view-group/entities/view-group.entity';
|
|
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('flatViewGroupMaps')
|
|
export class WorkspaceFlatViewGroupMapCacheService extends WorkspaceFlatMapCacheService<FlatViewGroupMaps> {
|
|
constructor(
|
|
@InjectCacheStorage(CacheStorageNamespace.EngineWorkspace)
|
|
cacheStorageService: CacheStorageService,
|
|
@InjectRepository(ViewGroupEntity)
|
|
private readonly viewGroupRepository: Repository<ViewGroupEntity>,
|
|
) {
|
|
super(cacheStorageService);
|
|
}
|
|
|
|
protected async computeFlatMap({
|
|
workspaceId,
|
|
}: {
|
|
workspaceId: string;
|
|
}): Promise<FlatViewGroupMaps> {
|
|
const existingViewGroups = await this.viewGroupRepository.find({
|
|
where: {
|
|
workspaceId,
|
|
},
|
|
withDeleted: true,
|
|
});
|
|
|
|
return existingViewGroups.reduce((flatViewGroupMaps, viewGroupEntity) => {
|
|
const flatViewGroup = fromViewGroupEntityToFlatViewGroup(viewGroupEntity);
|
|
|
|
return addFlatEntityToFlatEntityMapsOrThrow({
|
|
flatEntity: flatViewGroup,
|
|
flatEntityMaps: flatViewGroupMaps,
|
|
});
|
|
}, EMPTY_FLAT_ENTITY_MAPS);
|
|
}
|
|
}
|