from typing import List, Optional from fastapi import APIRouter, Depends, status from pydantic import BaseModel, ConfigDict, PositiveFloat from sqlalchemy.orm import Session from models.consumption import Consumption from routes.dependencies import get_db router = APIRouter(prefix="/api/consumption", tags=["Consumption"]) class ConsumptionBase(BaseModel): scenario_id: int amount: PositiveFloat description: Optional[str] = None class ConsumptionCreate(ConsumptionBase): pass class ConsumptionRead(ConsumptionBase): id: int model_config = ConfigDict(from_attributes=True) @router.post("/", response_model=ConsumptionRead, status_code=status.HTTP_201_CREATED) def create_consumption(item: ConsumptionCreate, db: Session = Depends(get_db)): db_item = Consumption(**item.model_dump()) db.add(db_item) db.commit() db.refresh(db_item) return db_item @router.get("/", response_model=List[ConsumptionRead]) def list_consumption(db: Session = Depends(get_db)): return db.query(Consumption).all()