"""A file remembers where it came from Revision ID: 0105_job_source_key Revises: 0104_job_ready_at Create Date: 2026-10-12 `download_jobs.source_key` is the origin a file came from — the source folder it may go back to — recorded when it is placed. An edit used to work its origin out through its parent each time, and once the parent was deleted or expired it fell back to "upload": moved into an own folder, it could no longer go back to its folder, and deleting that folder sent it to Uploads to stay forever. A file in a source folder takes that folder's key. One already in an own folder is left NULL and keeps being worked out (`folders.source_key_for`), as before. """ import sqlalchemy as sa from alembic import op revision: str = "0105_job_source_key" down_revision: str | None = "0104_job_ready_at" branch_labels: str | None = None depends_on: str | None = None def upgrade() -> None: op.add_column("download_jobs", sa.Column("source_key", sa.String(260))) op.execute( """ UPDATE download_jobs j SET source_key = f.source_key FROM file_folders f WHERE f.id = j.folder_id AND f.kind = 'source' """ ) def downgrade() -> None: op.drop_column("download_jobs", "source_key")