Short IDs become the canonical identifier in URLs (/i/:short_id), MinIO/R2 storage keys, and all API responses. Hash-based deduplication is preserved. Includes two-phase Alembic migration (003 adds nullable column, 004 enforces NOT NULL) with a backfill script to copy storage objects and populate short_id for existing images. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
25 lines
509 B
Python
25 lines
509 B
Python
"""set short_id NOT NULL on images
|
|
|
|
Revision ID: 004
|
|
Revises: 003
|
|
Create Date: 2026-05-09
|
|
|
|
IMPORTANT: Run migrate_to_short_ids.py script BEFORE applying this migration.
|
|
This migration will fail if any rows still have short_id IS NULL.
|
|
"""
|
|
|
|
from alembic import op
|
|
|
|
revision = "004"
|
|
down_revision = "003"
|
|
branch_labels = None
|
|
depends_on = None
|
|
|
|
|
|
def upgrade() -> None:
|
|
op.alter_column("images", "short_id", nullable=False)
|
|
|
|
|
|
def downgrade() -> None:
|
|
op.alter_column("images", "short_id", nullable=True)
|