from fastapi import APIRouter, Depends, status from sqlalchemy.orm import Session from typing import List from app.db.database import get_db from app.services.projects import ProjectService from app.schemas.project import Project, ProjectCreate router = APIRouter() def get_project_service(db: Session = Depends(get_db)) -> ProjectService: return ProjectService(db) @router.post("/", response_model=Project) def create_project( project: ProjectCreate, service: ProjectService = Depends(get_project_service) ): return service.create_project(project) @router.get("/", response_model=List[Project]) def read_projects( skip: int = 0, limit: int = 100, service: ProjectService = Depends(get_project_service) ): return service.get_projects(skip=skip, limit=limit) @router.get("/{project_id}", response_model=Project) def read_project( project_id: int, service: ProjectService = Depends(get_project_service) ): return service.get_project(project_id) @router.put("/{project_id}", response_model=Project) def update_project( project_id: int, project: ProjectCreate, service: ProjectService = Depends(get_project_service) ): return service.update_project(project_id, project) @router.delete("/{project_id}", status_code=status.HTTP_204_NO_CONTENT) def delete_project( project_id: int, service: ProjectService = Depends(get_project_service) ): return service.delete_project(project_id)