from typing import List from fastapi import APIRouter, Depends, Query from sqlalchemy.orm import Session from app.auth.dependencies import get_db from app.models.property import PropertyListing from app.schemas.property import PropertyResponse router = APIRouter(prefix="/api/affordable", tags=["Affordable Housing"]) @router.get("/", response_model=List[PropertyResponse]) def get_affordable_properties( skip: int = Query(0, ge=0), limit: int = Query(100, ge=1, le=100), state: str = Query(None), max_price: float = Query(None, ge=0), db: Session = Depends(get_db) ): query = db.query(PropertyListing).filter( PropertyListing.is_affordable, PropertyListing.is_active, PropertyListing.is_approved ) if state: query = query.filter(PropertyListing.state.ilike(f"%{state}%")) if max_price is not None: query = query.filter(PropertyListing.price <= max_price) properties = query.order_by(PropertyListing.price.asc()).offset(skip).limit(limit).all() return properties