feat: projects and boards

This commit is contained in:
2025-02-07 20:08:14 +04:00
parent 2aa84837e4
commit 9ee3f87de9
25 changed files with 1312 additions and 387 deletions

65
routers/project.py Normal file
View File

@@ -0,0 +1,65 @@
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)