from fastapi import APIRouter, Depends, HTTPException from sqlalchemy.orm import Session from typing import List, Optional from app.api.dependencies import get_db from app.models.review import Review from app.models.user import User from app.schemas.review import ReviewCreate, ReviewResponse router = APIRouter() @router.post("/reviews", response_model=ReviewResponse) def create_review(review: ReviewCreate, db: Session = Depends(get_db)): user = db.query(User).filter(User.username == review.username).first() if not user: raise HTTPException(status_code=404, detail="User not found") new_review = Review( username=review.username, location=review.location, rating=review.rating, comment=review.comment, ) db.add(new_review) db.commit() db.refresh(new_review) return new_review @router.get("/reviews", response_model=List[ReviewResponse]) def get_reviews(username: Optional[str] = None, db: Session = Depends(get_db)): if username: reviews = db.query(Review).filter(Review.username == username).all() if not reviews: raise HTTPException(status_code=404, detail="No reviews found for this user") return reviews return db.query(Review).all()