# ------------------------------------------------- # 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)

class WatchlistIn(BaseModel): movie_id: int

-- 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() );

# ------------------------------------------------- # 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

class AlertOut(BaseModel): id: int created_at: datetime.datetime is_active: bool from sqlalchemy import func, or_ from sqlalchemy.orm import Session from . import models, schemas