50 lines
1.7 KiB
Python
50 lines
1.7 KiB
Python
from typing import List
|
|
|
|
from fastapi import APIRouter, HTTPException, Depends
|
|
from sqlalchemy.orm import Session
|
|
|
|
from app.infrastructure.database.dependencies import get_db
|
|
from app.core.entities.status import StatusEntity
|
|
from app.core.usecases.status_service import StatusesService
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
@router.get("/statuses", response_model=List[StatusEntity])
|
|
def read_statuses(db: Session = Depends(get_db)):
|
|
service = StatusesService(db)
|
|
return service.get_all_statuses()
|
|
|
|
|
|
@router.get("/statuses/{status_id}", response_model=StatusEntity)
|
|
def read_status(status_id: int, db: Session = Depends(get_db)):
|
|
service = StatusesService(db)
|
|
status = service.get_status_by_id(status_id)
|
|
if status is None:
|
|
raise HTTPException(status_code=404, detail="Status not found")
|
|
return status
|
|
|
|
|
|
@router.post("/statuses", response_model=StatusEntity)
|
|
def create_status(status: StatusEntity, db: Session = Depends(get_db)):
|
|
service = StatusesService(db)
|
|
return service.create_status(status)
|
|
|
|
|
|
@router.put("/statuses/{status_id}", response_model=StatusEntity)
|
|
def update_status(status_id: int, status: StatusEntity, db: Session = Depends(get_db)):
|
|
service = StatusesService(db)
|
|
updated_status = service.update_status(status_id, status)
|
|
if updated_status is None:
|
|
raise HTTPException(status_code=404, detail="Status not found")
|
|
return updated_status
|
|
|
|
|
|
@router.delete("/statuses/{status_id}", response_model=bool)
|
|
def delete_status(status_id: int, db: Session = Depends(get_db)):
|
|
service = StatusesService(db)
|
|
success = service.delete_status(status_id)
|
|
if not success:
|
|
raise HTTPException(status_code=404, detail="Status not found")
|
|
return success
|