From bc1c7a8ae1f6216267da8da191ef7490335be2ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20S=C3=B3jko?= Date: Fri, 11 Aug 2023 10:54:08 +0200 Subject: [PATCH] tmp: disable decorating items completely --- .../src/Domain/Extension/ExtensionsHttpService.ts | 2 +- .../Handler/DuplicateItemSyncedEventHandler.ts | 3 ++- .../Handler/EmailBackupRequestedEventHandler.ts | 13 ++++++++----- .../src/Domain/Item/ItemRepositoryInterface.ts | 4 ++-- .../src/Domain/UseCase/Syncing/GetItem/GetItem.ts | 2 +- .../Domain/UseCase/Syncing/GetItems/GetItems.ts | 13 ++++++++----- .../Domain/UseCase/Syncing/SaveItems/SaveItems.ts | 2 +- .../Domain/UseCase/Syncing/SyncItems/SyncItems.ts | 15 +++++++++------ .../src/Infra/TypeORM/TypeORMItemRepository.ts | 12 ++++++++++-- 9 files changed, 42 insertions(+), 24 deletions(-) diff --git a/packages/syncing-server/src/Domain/Extension/ExtensionsHttpService.ts b/packages/syncing-server/src/Domain/Extension/ExtensionsHttpService.ts index 2bb5d106e..0b903d42b 100644 --- a/packages/syncing-server/src/Domain/Extension/ExtensionsHttpService.ts +++ b/packages/syncing-server/src/Domain/Extension/ExtensionsHttpService.ts @@ -139,7 +139,7 @@ export class ExtensionsHttpService implements ExtensionsHttpServiceInterface { userUuid: string, email: string, ): Promise { - const extension = await this.itemRepository.findByUuidAndUserUuid(extensionId, userUuid) + const extension = await this.itemRepository.findByUuidAndUserUuid(extensionId, userUuid, true) if (extension === null || !extension.props.content) { throw Error(`Could not find extensions with id ${extensionId}`) } diff --git a/packages/syncing-server/src/Domain/Handler/DuplicateItemSyncedEventHandler.ts b/packages/syncing-server/src/Domain/Handler/DuplicateItemSyncedEventHandler.ts index 0f8e367bb..1e622962b 100644 --- a/packages/syncing-server/src/Domain/Handler/DuplicateItemSyncedEventHandler.ts +++ b/packages/syncing-server/src/Domain/Handler/DuplicateItemSyncedEventHandler.ts @@ -16,7 +16,7 @@ export class DuplicateItemSyncedEventHandler implements DomainEventHandlerInterf ) {} async handle(event: DuplicateItemSyncedEvent): Promise { - const item = await this.itemRepository.findByUuidAndUserUuid(event.payload.itemUuid, event.payload.userUuid) + const item = await this.itemRepository.findByUuidAndUserUuid(event.payload.itemUuid, event.payload.userUuid, true) if (item === null) { this.logger.warn(`Could not find item with uuid ${event.payload.itemUuid}`) @@ -33,6 +33,7 @@ export class DuplicateItemSyncedEventHandler implements DomainEventHandlerInterf const existingOriginalItem = await this.itemRepository.findByUuidAndUserUuid( item.props.duplicateOf.value, event.payload.userUuid, + true, ) if (existingOriginalItem !== null) { diff --git a/packages/syncing-server/src/Domain/Handler/EmailBackupRequestedEventHandler.ts b/packages/syncing-server/src/Domain/Handler/EmailBackupRequestedEventHandler.ts index 4e6b9f6c3..4105a6260 100644 --- a/packages/syncing-server/src/Domain/Handler/EmailBackupRequestedEventHandler.ts +++ b/packages/syncing-server/src/Domain/Handler/EmailBackupRequestedEventHandler.ts @@ -53,11 +53,14 @@ export class EmailBackupRequestedEventHandler implements DomainEventHandlerInter const backupFileNames: string[] = [] for (const itemUuidBundle of itemUuidBundles) { - const items = await this.itemRepository.findAll({ - uuids: itemUuidBundle, - sortBy: 'updated_at_timestamp', - sortOrder: 'ASC', - }) + const items = await this.itemRepository.findAll( + { + uuids: itemUuidBundle, + sortBy: 'updated_at_timestamp', + sortOrder: 'ASC', + }, + true, + ) const bundleBackupFileNames = await this.itemBackupService.backup( items, diff --git a/packages/syncing-server/src/Domain/Item/ItemRepositoryInterface.ts b/packages/syncing-server/src/Domain/Item/ItemRepositoryInterface.ts index 7b3ecad56..636e1ff1e 100644 --- a/packages/syncing-server/src/Domain/Item/ItemRepositoryInterface.ts +++ b/packages/syncing-server/src/Domain/Item/ItemRepositoryInterface.ts @@ -7,7 +7,7 @@ import { ExtendedIntegrityPayload } from './ExtendedIntegrityPayload' export interface ItemRepositoryInterface { deleteByUserUuid(userUuid: string): Promise - findAll(query: ItemQuery): Promise + findAll(query: ItemQuery, noAssociations: boolean): Promise findAllRaw(query: ItemQuery): Promise streamAll(query: ItemQuery): Promise countAll(query: ItemQuery): Promise @@ -16,7 +16,7 @@ export interface ItemRepositoryInterface { ): Promise> findDatesForComputingIntegrityHash(userUuid: string): Promise> findItemsForComputingIntegrityPayloads(userUuid: string): Promise - findByUuidAndUserUuid(uuid: string, userUuid: string): Promise + findByUuidAndUserUuid(uuid: string, userUuid: string, noAssociations: boolean): Promise findByUuid(uuid: Uuid, noAssociations: boolean): Promise remove(item: Item): Promise save(item: Item): Promise diff --git a/packages/syncing-server/src/Domain/UseCase/Syncing/GetItem/GetItem.ts b/packages/syncing-server/src/Domain/UseCase/Syncing/GetItem/GetItem.ts index f8b56ebfa..56c9f3307 100644 --- a/packages/syncing-server/src/Domain/UseCase/Syncing/GetItem/GetItem.ts +++ b/packages/syncing-server/src/Domain/UseCase/Syncing/GetItem/GetItem.ts @@ -8,7 +8,7 @@ export class GetItem implements UseCaseInterface { constructor(private itemRepository: ItemRepositoryInterface) {} async execute(dto: GetItemDTO): Promise> { - const item = await this.itemRepository.findByUuidAndUserUuid(dto.itemUuid, dto.userUuid) + const item = await this.itemRepository.findByUuidAndUserUuid(dto.itemUuid, dto.userUuid, true) if (item === null) { return Result.fail(`Could not find item with uuid ${dto.itemUuid}`) diff --git a/packages/syncing-server/src/Domain/UseCase/Syncing/GetItems/GetItems.ts b/packages/syncing-server/src/Domain/UseCase/Syncing/GetItems/GetItems.ts index 12aed4d0d..702210009 100644 --- a/packages/syncing-server/src/Domain/UseCase/Syncing/GetItems/GetItems.ts +++ b/packages/syncing-server/src/Domain/UseCase/Syncing/GetItems/GetItems.ts @@ -56,11 +56,14 @@ export class GetItems implements UseCaseInterface { ) let items: Array = [] if (itemUuidsToFetch.length > 0) { - items = await this.itemRepository.findAll({ - uuids: itemUuidsToFetch, - sortBy: 'updated_at_timestamp', - sortOrder: 'ASC', - }) + items = await this.itemRepository.findAll( + { + uuids: itemUuidsToFetch, + sortBy: 'updated_at_timestamp', + sortOrder: 'ASC', + }, + true, + ) } const totalItemsCount = await this.itemRepository.countAll(itemQuery) diff --git a/packages/syncing-server/src/Domain/UseCase/Syncing/SaveItems/SaveItems.ts b/packages/syncing-server/src/Domain/UseCase/Syncing/SaveItems/SaveItems.ts index fa8a75b79..3d363bd25 100644 --- a/packages/syncing-server/src/Domain/UseCase/Syncing/SaveItems/SaveItems.ts +++ b/packages/syncing-server/src/Domain/UseCase/Syncing/SaveItems/SaveItems.ts @@ -42,7 +42,7 @@ export class SaveItems implements UseCaseInterface { } const itemUuid = itemUuidOrError.getValue() - const existingItem = await this.itemRepository.findByUuid(itemUuid, false) + const existingItem = await this.itemRepository.findByUuid(itemUuid, true) if (dto.readOnlyAccess) { conflicts.push({ diff --git a/packages/syncing-server/src/Domain/UseCase/Syncing/SyncItems/SyncItems.ts b/packages/syncing-server/src/Domain/UseCase/Syncing/SyncItems/SyncItems.ts index 0b0531994..552f44650 100644 --- a/packages/syncing-server/src/Domain/UseCase/Syncing/SyncItems/SyncItems.ts +++ b/packages/syncing-server/src/Domain/UseCase/Syncing/SyncItems/SyncItems.ts @@ -126,12 +126,15 @@ export class SyncItems implements UseCaseInterface { } private async frontLoadKeysItemsToTop(userUuid: string, retrievedItems: Array): Promise> { - const itemsKeys = await this.itemRepository.findAll({ - userUuid, - contentType: ContentType.TYPES.ItemsKey, - sortBy: 'updated_at_timestamp', - sortOrder: 'ASC', - }) + const itemsKeys = await this.itemRepository.findAll( + { + userUuid, + contentType: ContentType.TYPES.ItemsKey, + sortBy: 'updated_at_timestamp', + sortOrder: 'ASC', + }, + true, + ) const retrievedItemsIds: Array = retrievedItems.map((item: Item) => item.id.toString()) diff --git a/packages/syncing-server/src/Infra/TypeORM/TypeORMItemRepository.ts b/packages/syncing-server/src/Infra/TypeORM/TypeORMItemRepository.ts index c09fb6ce4..e9567af71 100644 --- a/packages/syncing-server/src/Infra/TypeORM/TypeORMItemRepository.ts +++ b/packages/syncing-server/src/Infra/TypeORM/TypeORMItemRepository.ts @@ -130,7 +130,7 @@ export class TypeORMItemRepository implements ItemRepositoryInterface { return items.sort((itemA, itemB) => itemB.updated_at_timestamp - itemA.updated_at_timestamp) } - async findByUuidAndUserUuid(uuid: string, userUuid: string): Promise { + async findByUuidAndUserUuid(uuid: string, userUuid: string, noAssociations: boolean): Promise { const persistence = await this.ormRepository .createQueryBuilder('item') .where('item.uuid = :uuid AND item.user_uuid = :userUuid', { @@ -146,6 +146,10 @@ export class TypeORMItemRepository implements ItemRepositoryInterface { try { const item = this.mapper.toDomain(persistence) + if (noAssociations) { + return item + } + await this.decorateItemWithAssociations(item) return item @@ -156,7 +160,7 @@ export class TypeORMItemRepository implements ItemRepositoryInterface { } } - async findAll(query: ItemQuery): Promise { + async findAll(query: ItemQuery, noAssociations: boolean): Promise { const persistence = await this.createFindAllQueryBuilder(query).getMany() const domainItems: Item[] = [] @@ -168,6 +172,10 @@ export class TypeORMItemRepository implements ItemRepositoryInterface { } } + if (noAssociations) { + return domainItems + } + await Promise.all(domainItems.map((item) => this.decorateItemWithAssociations(item))) return domainItems