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