from fastapi import APIRouter, Depends, HTTPException, status from sqlalchemy.orm import Session from ..database import get_db from .. import models from typing import List from pydantic import BaseModel router = APIRouter() class ProviderCreate(BaseModel): name: str photo_url: str | None = None # No hourly_rate; services will be added separately class ProviderOut(ProviderCreate): id: int class Config: orm_mode = True @router.post("/", response_model=ProviderOut, status_code=status.HTTP_201_CREATED) def create_provider(provider: ProviderCreate, db: Session = Depends(get_db)): db_provider = models.Provider( name=provider.name, photo_url=provider.photo_url, ) db.add(db_provider) try: db.commit() db.refresh(db_provider) except Exception as e: db.rollback() raise HTTPException(status_code=400, detail=str(e)) return db_provider @router.get("/", response_model=List[ProviderOut]) def list_providers(skip: int = 0, limit: int = 100, db: Session = Depends(get_db)): providers = db.query(models.Provider).offset(skip).limit(limit).all() return providers @router.get("/{provider_id}", response_model=ProviderOut) def get_provider(provider_id: int, db: Session = Depends(get_db)): provider = db.query(models.Provider).filter(models.Provider.id == provider_id).first() if not provider: raise HTTPException(status_code=404, detail="Provider not found") return provider