31 lines
1.1 KiB
Python
31 lines
1.1 KiB
Python
from typing import Optional
|
|
|
|
from sqlalchemy import select
|
|
|
|
from models import Board
|
|
from repositories.base import BaseRepository
|
|
from schemas.board import UpdateBoardSchema
|
|
|
|
|
|
class BoardRepository(BaseRepository):
|
|
async def get_all(self, project_id: int) -> list[Board]:
|
|
stmt = select(Board).where(
|
|
Board.is_deleted.is_(False), Board.project_id == project_id
|
|
)
|
|
result = await self.session.execute(stmt)
|
|
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))
|
|
result = await self.session.execute(stmt)
|
|
return result.scalar_one_or_none()
|
|
|
|
async def update(self, board: Board, data: UpdateBoardSchema) -> Board:
|
|
board.lexorank = data.lexorank if data.lexorank else board.lexorank
|
|
board.name = data.name if data.name else board.name
|
|
|
|
self.session.add(board)
|
|
await self.session.commit()
|
|
await self.session.refresh(board)
|
|
return board
|