from typing import Annotated from fastapi import APIRouter, Depends from sqlalchemy.ext.asyncio import AsyncSession from backend.session import get_session from schemas.board import * from services.auth import guest_user, authorized_user from services.board import BoardService board_router = APIRouter( prefix="/board", tags=["board"], dependencies=[Depends(guest_user)] ) @board_router.get( "/{project_id}", response_model=GetBoardsResponse, operation_id="get_boards", ) async def get_boards( session: Annotated[AsyncSession, Depends(get_session)], project_id: int, ): return await BoardService(session).get_boards(project_id) @board_router.post( '/', response_model=CreateBoardResponse, operation_id="create_board", dependencies=[Depends(authorized_user)] ) async def create_board( session: Annotated[AsyncSession, Depends(get_session)], request: CreateBoardRequest, ): return await BoardService(session).create_board(request) @board_router.patch( '/', response_model=UpdateBoardResponse, operation_id="update_board", dependencies=[Depends(authorized_user)] ) async def update_board( session: Annotated[AsyncSession, Depends(get_session)], request: UpdateBoardRequest, ): return await BoardService(session).update_board(request) @board_router.patch( '/order', response_model=UpdateBoardOrderResponse, operation_id="update_board_order", dependencies=[Depends(authorized_user)] ) async def update_board_order( session: Annotated[AsyncSession, Depends(get_session)], request: UpdateBoardOrderRequest, ): return await BoardService(session).update_board_order(request) @board_router.delete( '/{board_id}', response_model=DeleteBoardResponse, operation_id="delete_board", dependencies=[Depends(authorized_user)] ) async def delete_board( session: Annotated[AsyncSession, Depends(get_session)], board_id: int, ): return await BoardService(session).delete_board(board_id)