feat: board deletion endpoint

This commit is contained in:
2025-08-07 10:12:54 +04:00
parent 734099165b
commit 2fed828768
4 changed files with 43 additions and 1 deletions

View File

@ -2,6 +2,7 @@ from datetime import datetime
from typing import Optional
from sqlalchemy import select
from sqlalchemy.orm import selectinload
from models import Board
from repositories.base import BaseRepository
@ -17,7 +18,11 @@ class BoardRepository(BaseRepository):
return list(result.scalars().all())
async def get_by_id(self, board_id: int) -> Optional[Board]:
stmt = select(Board).where(Board.id == board_id, Board.is_deleted.is_(False))
stmt = (
select(Board)
.where(Board.id == board_id, Board.is_deleted.is_(False))
.options(selectinload(Board.deals))
)
result = await self.session.execute(stmt)
return result.scalar_one_or_none()
@ -38,3 +43,13 @@ class BoardRepository(BaseRepository):
await self.session.commit()
await self.session.refresh(board)
return board
async def delete(self, board: Board, is_soft: bool):
if not is_soft:
await self.session.delete(board)
await self.session.commit()
return
board.is_deleted = True
self.session.add(board)
await self.session.commit()