bookmarks: account-synced saved locations API #117

Merged
admin_emi merged 9 commits from feat/location-bookmarks into dev 2026-07-26 18:40:24 +00:00
Showing only changes of commit 58e3a8d625 - Show all commits

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