Files
Fulfillment-Backend/routers/project.py
2025-02-07 20:08:14 +04:00

66 lines
1.7 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.project import *
from services.auth import guest_user, authorized_user
from services.project import ProjectService
project_router = APIRouter(
prefix="/project",
tags=["project"],
dependencies=[Depends(guest_user)]
)
@project_router.get(
"/",
response_model=GetProjectsResponse,
operation_id="get_projects",
)
async def get_projects(
session: Annotated[AsyncSession, Depends(get_session)],
):
return await ProjectService(session).get_projects()
@project_router.post(
'/',
response_model=CreateProjectResponse,
operation_id="create_project",
dependencies=[Depends(authorized_user)]
)
async def create_project(
session: Annotated[AsyncSession, Depends(get_session)],
request: CreateProjectRequest,
):
return await ProjectService(session).create_project(request)
@project_router.patch(
'/',
response_model=UpdateProjectResponse,
operation_id="update_project",
dependencies=[Depends(authorized_user)]
)
async def update_project(
session: Annotated[AsyncSession, Depends(get_session)],
request: UpdateProjectRequest,
):
return await ProjectService(session).update_project(request)
@project_router.delete(
'/{project_id}',
response_model=DeleteProjectResponse,
operation_id="delete_project",
dependencies=[Depends(authorized_user)]
)
async def delete_project(
session: Annotated[AsyncSession, Depends(get_session)],
project_id: int,
):
return await ProjectService(session).delete_project(project_id)