32 lines
885 B
Python
32 lines
885 B
Python
from fastapi import APIRouter, Depends, HTTPException
|
|
from sqlalchemy.orm import Session, joinedload
|
|
|
|
from app.database import get_db
|
|
from app.models.project import Project
|
|
from app.schemas.project import ProjectCard, ProjectPage
|
|
|
|
router = APIRouter(prefix="/projects", tags=["Projects"])
|
|
|
|
|
|
@router.get("/", response_model=list[ProjectCard])
|
|
def get_projects(db: Session = Depends(get_db)):
|
|
return (
|
|
db.query(Project)
|
|
.options(joinedload(Project.skills))
|
|
.all()
|
|
)
|
|
|
|
|
|
@router.get("/{project_id}", response_model=ProjectPage)
|
|
def get_project(project_id: int, db: Session = Depends(get_db)):
|
|
project = (
|
|
db.query(Project)
|
|
.options(joinedload(Project.skills))
|
|
.filter(Project.id == project_id)
|
|
.first()
|
|
)
|
|
|
|
if not project:
|
|
raise HTTPException(status_code=404, detail="Project not found")
|
|
|
|
return project |