Hindimovieslink Access

class RatingIn(BaseModel): rating: int # 1‑5 review_text: Optional[str] = None

# ------------------------------------------------- # 2️⃣ Get Movie Details + Links # ------------------------------------------------- @app.get("/movies/movie_id", response_model=schemas.MovieDetail) def get_movie(movie_id: int, db: Session = Depends(auth.get_db)): movie = crud.get_movie_with_links(db, movie_id) if not movie: raise HTTPException(status_code=404, detail="Movie not found") return movie

def search_movies(db: Session, q: str, genre: str = None, year: int = None, limit: int = 20): stmt = db.query(models.Movie).filter( models.Movie.title.ilike(f"%q%") | func.similarity(models.Movie.title, q) > 0.3 ) if genre: stmt = stmt.filter(models.Movie.genre.contains([genre])) if year: stmt = stmt.filter(models.Movie.year == year) return stmt.limit(limit).all() hindimovieslink

class PlatformOut(BaseModel): name: str logo_url: Optional[str]

class MovieDetail(MovieOut): description: Optional[str] genre: List[str] = [] director: Optional[str] cast: List[str] = [] links: List[LinkOut] = [] movie_id) if not movie: raise HTTPException(status_code=404

class RatingOut(BaseModel): average: float count: int

def upsert_rating(db: Session, user_id: int, movie_id: int, payload: schemas.RatingIn): rating = ( db.query(models.UserRating) .filter_by(user_id=user_id, movie_id=movie_id) .first() ) if rating: rating.rating = payload.rating rating.review_text = payload.review_text else: rating = models.UserRating( user_id=user_id, movie_id=movie_id, rating=payload.rating, review_text=payload.review_text, ) db.add(rating) genre: str = None

class WatchlistIn(BaseModel): movie_id: int