from typing import Dict, List from fastapi import APIRouter, Depends from pydantic import BaseModel, ConfigDict from sqlalchemy.orm import Session from models.distribution import Distribution from routes.dependencies import get_db router = APIRouter(prefix="/api/distributions", tags=["Distributions"]) class DistributionCreate(BaseModel): name: str distribution_type: str parameters: Dict[str, float | int] class DistributionRead(DistributionCreate): id: int model_config = ConfigDict(from_attributes=True) @router.post("/", response_model=DistributionRead) async def create_distribution( dist: DistributionCreate, db: Session = Depends(get_db) ): db_dist = Distribution(**dist.model_dump()) db.add(db_dist) db.commit() db.refresh(db_dist) return db_dist @router.get("/", response_model=List[DistributionRead]) async def list_distributions(db: Session = Depends(get_db)): dists = db.query(Distribution).all() return dists