From fc734475dfbd6a3816e456c4cee54002d112db92 Mon Sep 17 00:00:00 2001 From: Philipinho <16838612+Philipinho@users.noreply.github.com> Date: Sat, 18 Apr 2026 16:31:44 +0100 Subject: [PATCH] feat(base): add POST /bases/rows/delete-many endpoint --- .../base/controllers/base-row.controller.ts | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/apps/server/src/core/base/controllers/base-row.controller.ts b/apps/server/src/core/base/controllers/base-row.controller.ts index e3759a45..c6dedf0c 100644 --- a/apps/server/src/core/base/controllers/base-row.controller.ts +++ b/apps/server/src/core/base/controllers/base-row.controller.ts @@ -14,6 +14,7 @@ import { CreateRowDto } from '../dto/create-row.dto'; import { UpdateRowDto, DeleteRowDto, + DeleteRowsDto, RowIdDto, ListRowsDto, ReorderRowDto, @@ -118,6 +119,26 @@ export class BaseRowController { await this.baseRowService.delete(dto, workspace.id, user.id); } + @HttpCode(HttpStatus.OK) + @Post('delete-many') + async deleteMany( + @Body() dto: DeleteRowsDto, + @AuthUser() user: User, + @AuthWorkspace() workspace: Workspace, + ) { + const base = await this.baseRepo.findById(dto.baseId); + if (!base) { + throw new NotFoundException('Base not found'); + } + + const ability = await this.spaceAbility.createForUser(user, base.spaceId); + if (ability.cannot(SpaceCaslAction.Edit, SpaceCaslSubject.Base)) { + throw new ForbiddenException(); + } + + await this.baseRowService.deleteMany(dto, workspace.id, user.id); + } + @HttpCode(HttpStatus.OK) @Post('list') async list(