diff --git a/backend/backlog_app/alembic/versions/2026_02_09_1441-b470381bb2ef_add_published_field_to_movie_table.py b/backend/backlog_app/alembic/versions/2026_02_09_1441-b470381bb2ef_add_published_field_to_movie_table.py new file mode 100644 index 0000000..a8ffbde --- /dev/null +++ b/backend/backlog_app/alembic/versions/2026_02_09_1441-b470381bb2ef_add_published_field_to_movie_table.py @@ -0,0 +1,31 @@ +"""add published field to Movie table + +Revision ID: b470381bb2ef +Revises: 38f457e3cf5f +Create Date: 2026-02-09 14:41:50.069806 + +""" + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "b470381bb2ef" +down_revision: Union[str, Sequence[str], None] = "38f457e3cf5f" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + """Upgrade schema.""" + op.add_column( + "movies", + sa.Column("published", sa.Boolean(), server_default="false", nullable=False), + ) + + +def downgrade() -> None: + """Downgrade schema.""" + op.drop_column("movies", "published") diff --git a/backend/backlog_app/api/crud.py b/backend/backlog_app/api/crud.py index ceb5a45..3e5c776 100644 --- a/backend/backlog_app/api/crud.py +++ b/backend/backlog_app/api/crud.py @@ -1,6 +1,7 @@ import logging from fastapi import HTTPException +from sqlalchemy import or_ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.future import select from sqlalchemy.orm import selectinload @@ -40,11 +41,14 @@ async def create_movie( async def get_movies(db: AsyncSession, user_id: str | None = None): query = select(Movie).options(selectinload(Movie.user)) - if user_id is not None: + if user_id: query = query.where(Movie.user_id == user_id) + else: + query = query.where(Movie.published.is_(True)) result = await db.execute(query) movies = result.scalars().all() + return [ MovieRead( id=m.id, diff --git a/backend/backlog_app/models/movie.py b/backend/backlog_app/models/movie.py index a872340..6cce5b5 100644 --- a/backend/backlog_app/models/movie.py +++ b/backend/backlog_app/models/movie.py @@ -39,7 +39,12 @@ class Movie(Base): server_default="false", nullable=False, ) - + published: Mapped[bool] = mapped_column( + Boolean, + default=False, + server_default="false", + nullable=False, + ) rating: Mapped[float | None] = mapped_column( Float, nullable=True, diff --git a/backend/backlog_app/schemas/movie.py b/backend/backlog_app/schemas/movie.py index 84559f7..e9ee8ec 100644 --- a/backend/backlog_app/schemas/movie.py +++ b/backend/backlog_app/schemas/movie.py @@ -23,6 +23,7 @@ class MovieCreate(MovieBase): description: Annotated[str, Len(min_length=20, max_length=1000)] | None = None year: int | None = None rating: float | None = Field(default=None, ge=1.0, le=10.0) + published: bool = False class MovieUpdate(MovieBase): @@ -31,6 +32,7 @@ class MovieUpdate(MovieBase): year: int | None = None watched: bool | None = None rating: float | None = Field(default=None, ge=1.0, le=10.0) + published: bool = False class MovieRead(MovieBase):