49 lines
1.4 KiB
Python
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)
|