diff --git a/meet-ce/backend/src/repositories/base.repository.ts b/meet-ce/backend/src/repositories/base.repository.ts index 0ecf1cb6..d7cbc8af 100644 --- a/meet-ce/backend/src/repositories/base.repository.ts +++ b/meet-ce/backend/src/repositories/base.repository.ts @@ -228,20 +228,29 @@ export abstract class BaseRepository { /** * Deletes multiple documents matching the given filter. * @param filter - MongoDB query filter - * @throws Error if no documents were found or deleted + * @param failIfEmpty - Whether to throw error if no documents are found (default: true) + * @throws Error if no documents were found or deleted (only when failIfEmpty is true) */ - protected async deleteMany(filter: FilterQuery = {}): Promise { + protected async deleteMany(filter: FilterQuery = {}, failIfEmpty = true): Promise { try { const result = await this.model.deleteMany(filter).exec(); const deletedCount = result.deletedCount || 0; if (deletedCount === 0) { - this.logger.error('No documents found to delete with filter:', filter); - throw new Error('No documents found for deletion'); + if (failIfEmpty) { + this.logger.error('No documents found to delete with filter:', filter); + throw new Error('No documents found for deletion'); + } else { + this.logger.debug('No documents found to delete with filter:', filter); + } + } else { + this.logger.debug(`Deleted ${deletedCount} documents`); + } + } catch (error) { + if (error instanceof Error && error.message === 'No documents found for deletion') { + throw error; } - this.logger.debug(`Deleted ${deletedCount} documents`); - } catch (error) { this.logger.error('Error deleting documents:', error); throw error; } diff --git a/meet-ce/backend/src/repositories/room-member.repository.ts b/meet-ce/backend/src/repositories/room-member.repository.ts index bfeffd58..20244afd 100644 --- a/meet-ce/backend/src/repositories/room-member.repository.ts +++ b/meet-ce/backend/src/repositories/room-member.repository.ts @@ -267,23 +267,23 @@ export class RoomMemberRepository extends BaseRepository { - await this.deleteMany({ roomId }); + await this.deleteMany({ roomId }, false); } /** * Removes all room memberships for a specific member across all rooms. * This is useful when deleting a user account. + * Does not fail if no memberships are found. * * @param memberId - The ID of the member whose memberships should be deleted - * @throws Error if members could not be deleted */ async deleteAllByMemberId(memberId: string): Promise { - await this.deleteMany({ memberId }); + await this.deleteMany({ memberId }, false); } // ==========================================