Browse Source

fix(syncing-server): handling mixed values of deleted flag in MongoDB (#708)

Karol Sójko 1 year ago
parent
commit
3ba673b424

+ 4 - 2
packages/syncing-server/src/Infra/TypeORM/MongoDBItemRepository.ts

@@ -48,7 +48,7 @@ export class MongoDBItemRepository implements ItemRepositoryInterface {
   async findContentSizeForComputingTransferLimit(query: ItemQuery): Promise<ItemContentSizeDescriptor[]> {
     const options = this.createFindOptions(query)
     const rawItems = await this.mongoRepository.find({
-      select: ['uuid', 'contentSize'],
+      select: ['_id', 'contentSize'],
       ...options,
     })
 
@@ -185,7 +185,9 @@ export class MongoDBItemRepository implements ItemRepositoryInterface {
       }
     }
     if (query.deleted !== undefined) {
-      options.where = { ...options.where, deleted: { $eq: query.deleted } }
+      const deletedMixedValues = query.deleted === true ? [true, 1] : [false, 0]
+
+      options.where = { ...options.where, deleted: { $in: deletedMixedValues } }
     }
     if (query.contentType) {
       if (Array.isArray(query.contentType)) {

+ 2 - 2
packages/syncing-server/src/Mapping/Persistence/MongoDB/MongoDBItemPersistenceMapper.ts

@@ -99,7 +99,7 @@ export class MongoDBItemPersistenceMapper implements MapperInterface<Item, Mongo
         encItemKey: projection.encItemKey,
         authHash: projection.authHash,
         userUuid,
-        deleted: projection.deleted,
+        deleted: !!projection.deleted,
         dates,
         timestamps,
         updatedWithSession,
@@ -127,7 +127,7 @@ export class MongoDBItemPersistenceMapper implements MapperInterface<Item, Mongo
     mongoDbItem.encItemKey = domain.props.encItemKey
     mongoDbItem.authHash = domain.props.authHash
     mongoDbItem.userUuid = domain.props.userUuid.value
-    mongoDbItem.deleted = domain.props.deleted
+    mongoDbItem.deleted = !!domain.props.deleted
     mongoDbItem.createdAt = domain.props.dates.createdAt
     mongoDbItem.updatedAt = domain.props.dates.updatedAt
     mongoDbItem.createdAtTimestamp = domain.props.timestamps.createdAt