feat: add bulk delete

This commit is contained in:
hexastack
2024-10-10 17:46:38 +01:00
parent 5681a810aa
commit 3710fd4054
3 changed files with 129 additions and 7 deletions

View File

@@ -7,6 +7,7 @@
*/
import {
BadRequestException,
Body,
Controller,
Delete,
@@ -27,6 +28,7 @@ import { TFilterQuery } from 'mongoose';
import { CsrfInterceptor } from '@/interceptors/csrf.interceptor';
import { LoggerService } from '@/logger/logger.service';
import { BaseController } from '@/utils/generics/base-controller';
import { DeleteResult } from '@/utils/generics/base-repository';
import { PageQueryDto } from '@/utils/pagination/pagination-query.dto';
import { PageQueryPipe } from '@/utils/pagination/pagination-query.pipe';
import { PopulatePipe } from '@/utils/pipes/populate.pipe';
@@ -211,4 +213,31 @@ export class NlpEntityController extends BaseController<
}
return result;
}
/**
* Deletes multiple NLP entities by their IDs.
* @param ids - IDs of NLP entities to be deleted.
* @returns A Promise that resolves to the deletion result.
*/
@CsrfCheck(true)
@Delete('')
@HttpCode(204)
async deleteMany(@Body('ids') ids: string[]): Promise<DeleteResult> {
if (!ids || ids.length === 0) {
throw new BadRequestException('No IDs provided for deletion.');
}
const deleteResult = await this.nlpEntityService.deleteMany({
_id: { $in: ids },
});
if (deleteResult.deletedCount === 0) {
this.logger.warn(
`Unable to delete NLP entities with provided IDs: ${ids}`,
);
throw new NotFoundException('NLP entities with provided IDs not found');
}
this.logger.log(`Successfully deleted NLP entities with IDs: ${ids}`);
return deleteResult;
}
}