53 lines
1.6 KiB
Python
53 lines
1.6 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.step import StepEntity
|
|
from app.core.usecases.step_service import StepService
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
@router.get("/steps", response_model=List[StepEntity])
|
|
def read_steps(db: Session = Depends(get_db)):
|
|
service = StepService(db)
|
|
return service.get_all_steps()
|
|
|
|
|
|
@router.get("/steps/{step_id}", response_model=StepEntity)
|
|
def read_step(step_id: int, db: Session = Depends(get_db)):
|
|
service = StepService(db)
|
|
step = service.get_step_by_id(step_id)
|
|
if step is None:
|
|
raise HTTPException(status_code=404, detail="Step not found")
|
|
|
|
return step
|
|
|
|
|
|
@router.post("/steps", response_model=StepEntity)
|
|
def create_step(step: StepEntity, db: Session = Depends(get_db)):
|
|
service = StepService(db)
|
|
return service.create_step(step)
|
|
|
|
|
|
@router.put("/steps/{step_id}", response_model=StepEntity)
|
|
def update_step(step_id: int, step: StepEntity, db: Session = Depends(get_db)):
|
|
service = StepService(db)
|
|
updated_step = service.update_step(step_id, step)
|
|
if updated_step is None:
|
|
raise HTTPException(status_code=404, detail="Step not found")
|
|
|
|
return updated_step
|
|
|
|
|
|
@router.delete("/steps/{step_id}", response_model=bool)
|
|
def delete_step(step_id: int, db: Session = Depends(get_db)):
|
|
service = StepService(db)
|
|
success = service.delete_step(step_id)
|
|
if not success:
|
|
raise HTTPException(status_code=404, detail="Step not found")
|
|
|
|
return success
|