from fastapi import APIRouter, HTTPException, Depends from sqlalchemy.orm import Session from typing import List from pydantic import BaseModel from config.database import SessionLocal from models.distribution import Distribution router = APIRouter(prefix="/api/distributions", tags=["Distributions"]) def get_db(): db = SessionLocal() try: yield db finally: db.close() class DistributionCreate(BaseModel): name: str distribution_type: str parameters: dict class DistributionRead(DistributionCreate): id: int class Config: orm_mode = True @router.post("/", response_model=DistributionRead) async def create_distribution(dist: DistributionCreate, db: Session = Depends(get_db)): db_dist = Distribution(**dist.dict()) 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