29 lines
855 B
Python
29 lines
855 B
Python
from fastapi import APIRouter, HTTPException, status
|
|
|
|
from app.modules.projects.schemas import ProjectCreate, ProjectRead
|
|
from app.modules.projects.service import project_service
|
|
|
|
router = APIRouter(prefix="/projects", tags=["projects"])
|
|
|
|
|
|
@router.get("", response_model=list[ProjectRead])
|
|
async def list_projects() -> list[ProjectRead]:
|
|
return project_service.list()
|
|
|
|
|
|
@router.post(
|
|
"",
|
|
response_model=ProjectRead,
|
|
status_code=status.HTTP_201_CREATED,
|
|
)
|
|
async def create_project(payload: ProjectCreate) -> ProjectRead:
|
|
return project_service.create(payload)
|
|
|
|
|
|
@router.get("/{project_id}", response_model=ProjectRead)
|
|
async def get_project(project_id: int) -> ProjectRead:
|
|
project = project_service.get(project_id)
|
|
if project is None:
|
|
raise HTTPException(status_code=404, detail="Project not found")
|
|
return project
|