Spaces:
Sleeping
Sleeping
| from fastapi import APIRouter, Depends, HTTPException | |
| from sqlalchemy.orm import Session | |
| from database import get_db | |
| from models import Project, ProjectCreate, ProjectUpdate, ProjectResponse | |
| router = APIRouter(prefix="/projects", tags=["projects"]) | |
| def list_projects(db: Session = Depends(get_db)): | |
| return db.query(Project).order_by(Project.created_at.desc()).all() | |
| def create_project(data: ProjectCreate, db: Session = Depends(get_db)): | |
| project = Project(**data.model_dump()) | |
| db.add(project) | |
| db.commit() | |
| db.refresh(project) | |
| return project | |
| def get_project(project_id: int, db: Session = Depends(get_db)): | |
| project = db.query(Project).filter(Project.id == project_id).first() | |
| if not project: | |
| raise HTTPException(status_code=404, detail="Project not found") | |
| return project | |
| def update_project(project_id: int, data: ProjectUpdate, db: Session = Depends(get_db)): | |
| project = db.query(Project).filter(Project.id == project_id).first() | |
| if not project: | |
| raise HTTPException(status_code=404, detail="Project not found") | |
| for field, value in data.model_dump(exclude_unset=True).items(): | |
| setattr(project, field, value) | |
| db.commit() | |
| db.refresh(project) | |
| return project | |
| def delete_project(project_id: int, db: Session = Depends(get_db)): | |
| project = db.query(Project).filter(Project.id == project_id).first() | |
| if not project: | |
| raise HTTPException(status_code=404, detail="Project not found") | |
| db.delete(project) | |
| db.commit() | |