bookmarks: account-synced saved locations API #117
1 changed files with 45 additions and 0 deletions
45
backend/alembic/versions/0004_bookmarks.py
Normal file
45
backend/alembic/versions/0004_bookmarks.py
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
"""bookmark: saved locations
|
||||
|
||||
Adds the ``bookmark`` table backing the "bookmarked locations" feature — one row
|
||||
per (user, grid cell), following the same shape as ``subscription``.
|
||||
|
||||
Conditional on purpose, like 0003_user_discord_only: revision 0001 builds the
|
||||
schema from the *current* models.py via ``Base.metadata.create_all``, so a
|
||||
database created after ``Bookmark`` was added to the ORM (fresh envs, most tests)
|
||||
already has the table, and an unconditional ``create_table`` would fail there
|
||||
with a duplicate-table error. Only a database stamped before this revision is
|
||||
missing it.
|
||||
|
||||
Revision ID: 0004_bookmarks
|
||||
Revises: 0003_user_discord_only
|
||||
Create Date: 2026-07-26
|
||||
"""
|
||||
import sqlalchemy as sa
|
||||
from alembic import op
|
||||
|
||||
revision = "0004_bookmarks"
|
||||
down_revision = "0003_user_discord_only"
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def _has_table() -> bool:
|
||||
return sa.inspect(op.get_bind()).has_table("bookmark")
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
if _has_table():
|
||||
return
|
||||
# Built from the live ORM table (accounts.models.Bookmark) rather than
|
||||
# hand-duplicated column definitions, so this can never drift from models.py.
|
||||
from accounts.models import Bookmark
|
||||
|
||||
Bookmark.__table__.create(bind=op.get_bind())
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
if not _has_table():
|
||||
return
|
||||
from accounts.models import Bookmark
|
||||
|
||||
Bookmark.__table__.drop(bind=op.get_bind())
|
||||
Loading…
Reference in a new issue