Hindimovieslink 〈Must Try〉

class WatchlistItemOut(BaseModel): movie_id: int added_at: datetime.datetime

# ------------------------------------------------- # 1️⃣ Search Movies # ------------------------------------------------- @app.get("/search", response_model=List[schemas.MovieOut]) def search_movies( q: str = Query(..., description="Search term"), genre: Optional[str] = None, year: Optional[int] = None, limit: int = 20, db: Session = Depends(auth.get_db) ): """ Full‑text / trigram fuzzy search on title + optional filters. """ return crud.search_movies(db, q, genre, year, limit)

CREATE EXTENSION IF NOT EXISTS pg_trgm; CREATE INDEX idx_movies_title_trgm ON movies USING gin (title gin_trgm_ops); from fastapi import FastAPI, Depends, HTTPException, Query from pydantic import BaseModel from typing import List, Optional from sqlalchemy.orm import Session import models, crud, schemas, auth hindimovieslink

-- User Ratings CREATE TABLE user_ratings ( id BIGSERIAL PRIMARY KEY, user_id BIGINT REFERENCES users(id) ON DELETE CASCADE, movie_id BIGINT REFERENCES movies(id) ON DELETE CASCADE, rating SMALLINT CHECK (rating BETWEEN 1 AND 5), review_text TEXT, created_at TIMESTAMP DEFAULT now(), UNIQUE(user_id, movie_id) );

app = FastAPI(title="HindimoviesLink API", version="0.1.0") genre: Optional[str] = None

class AlertIn(BaseModel): movie_id: int platform_id: int target_price_usd: float # Notify when price <= this

# ------------------------------------------------- # 5️⃣ Notification subscription (price‑drop) # ------------------------------------------------- @app.post("/me/alerts", response_model=schemas.AlertOut) def create_price_alert( payload: schemas.AlertIn, user: models.User = Depends(auth.get_current_user), db: Session = Depends(auth.get_db) ): return crud.create_price_alert(db, user.id, payload) class MovieOut(BaseModel): id: int title: str year: Optional[int] poster_url: Optional[str] rating_imdb: Optional[float] year: Optional[int] = None

# ------------------------------------------------- # 4️⃣ Watch‑Later List # ------------------------------------------------- @app.post("/me/watchlist", response_model=schemas.WatchlistItemOut) def add_to_watchlist( payload: schemas.WatchlistIn, user: models.User = Depends(auth.get_current_user), db: Session = Depends(auth.get_db) ): return crud.add_to_watchlist(db, user.id, payload.movie_id)