Hindimovieslink ^new^ Info
-- OTT Links (one movie can have many platforms) CREATE TABLE platforms ( id BIGSERIAL PRIMARY KEY, name TEXT NOT NULL, logo_url TEXT, affiliate_template TEXT -- e.g. "https://partner.com/checkout?movie=imdb_id" );
class WatchlistItemOut(BaseModel): movie_id: int added_at: datetime.datetime
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 AlertIn(BaseModel): movie_id: int platform_id: int target_price_usd: float # Notify when price <= this
-- Movies CREATE TABLE movies ( id BIGSERIAL PRIMARY KEY, title TEXT NOT NULL, year INT, description TEXT, poster_url TEXT, imdb_id TEXT UNIQUE, runtime_minutes INT, language TEXT, genre TEXT[], director TEXT, cast TEXT[], rating_imdb NUMERIC(2,1), rating_user_avg NUMERIC(2,1) DEFAULT 0, rating_user_cnt INT DEFAULT 0, created_at TIMESTAMP DEFAULT now() ); -- OTT Links (one movie can have many
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)
def get_movie_with_links(db: Session, movie_id: int): return ( db.query(models.Movie) .filter(models.Movie.id == movie_id) .options( sqlalchemy.orm.joinedload(models.Movie.links) .joinedload(models.MovieLink.platform) ) .first() ) name TEXT NOT NULL
# ------------------------------------------------- # 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