import uuid
from typing import List

from fastapi import APIRouter, Depends, HTTPException
from sqlalchemy.orm import Session

from app.database import get_db
from app.models.soil_profile import SoilProfile
from app.schemas.soil_profile import SoilProfileResponse

router = APIRouter(prefix="/api/soils", tags=["soils"])


@router.get("", response_model=List[SoilProfileResponse])
def list_soils(db: Session = Depends(get_db)):
    return db.query(SoilProfile).order_by(SoilProfile.name).all()


@router.get("/{soil_id}", response_model=SoilProfileResponse)
def get_soil(soil_id: uuid.UUID, db: Session = Depends(get_db)):
    soil = db.query(SoilProfile).filter(SoilProfile.id == soil_id).first()
    if not soil:
        raise HTTPException(status_code=404, detail="Soil profile not found")
    return soil
