sumaq/backend/app/api/v1/endpoints/projects.py

49 lines
1.4 KiB
Python

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)