80 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
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)
 |