diff --git a/api/src/chat/repositories/category.repository.ts b/api/src/chat/repositories/category.repository.ts index 69a9974c..dc628d21 100644 --- a/api/src/chat/repositories/category.repository.ts +++ b/api/src/chat/repositories/category.repository.ts @@ -24,14 +24,11 @@ export class CategoryRepository extends BaseRepository< never, CategoryDto > { - private readonly blockService: BlockService; - constructor( @InjectModel(Category.name) readonly model: Model, - @Optional() blockService?: BlockService, + @Optional() private readonly blockService?: BlockService, ) { super(model, Category); - this.blockService = blockService!; } /** @@ -42,7 +39,7 @@ export class CategoryRepository extends BaseRepository< * @param criteria - The filter criteria for finding blocks to delete. */ async preDelete( - query: Query< + _query: Query< DeleteResult, Document, unknown, @@ -51,23 +48,18 @@ export class CategoryRepository extends BaseRepository< >, criteria: TFilterQuery, ) { - criteria = query.getQuery(); - const ids = Array.isArray(criteria._id?.$in) - ? criteria._id.$in - : Array.isArray(criteria._id) - ? criteria._id - : [criteria._id]; - - for (const id of ids) { - const associatedBlocks = await this.blockService.findOne({ - category: id, + if (criteria._id) { + const block = await this.blockService?.findOneAndPopulate({ + category: criteria._id, }); - if (associatedBlocks) { - const category = await this.findOne({ _id: id }); + + if (block) { throw new ForbiddenException( - `Category ${category?.label || id} has blocks associated with it`, + `Category ${block.category?.label} has at least one associated block`, ); } + } else { + throw new Error('Attempted to delete category using unknown criteria'); } } } diff --git a/api/src/chat/repositories/label.repository.ts b/api/src/chat/repositories/label.repository.ts index bf5bcdd7..3ae6c5fc 100644 --- a/api/src/chat/repositories/label.repository.ts +++ b/api/src/chat/repositories/label.repository.ts @@ -8,16 +8,14 @@ import { Injectable } from '@nestjs/common'; import { InjectModel } from '@nestjs/mongoose'; -import { Document, Model, Query } from 'mongoose'; +import { Model } from 'mongoose'; -import { BaseRepository, DeleteResult } from '@/utils/generics/base-repository'; -import { TFilterQuery } from '@/utils/types/filter.types'; +import { BaseRepository } from '@/utils/generics/base-repository'; import { LabelDto } from '../dto/label.dto'; import { Label, LABEL_POPULATE, - LabelDocument, LabelFull, LabelPopulate, } from '../schemas/label.schema'; @@ -32,59 +30,4 @@ export class LabelRepository extends BaseRepository< constructor(@InjectModel(Label.name) readonly model: Model