"""fix_subscriptions_and_storage Revision ID: 005_fix_subs_storage Revises: 004_add_document_file_sizes Create Date: 2026-01-04 Fixes: - Add missing columns to subscriptions table - Rename storage_usage.last_calculated_at to last_updated """ from typing import Sequence, Union from alembic import op import sqlalchemy as sa from sqlalchemy.dialects.postgresql import UUID # revision identifiers, used by Alembic. revision: str = '005_fix_subs_storage' down_revision: Union[str, None] = '004_add_document_file_sizes' branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: """Add missing columns and fix naming""" # Add missing columns to subscriptions table op.add_column('subscriptions', sa.Column('start_date', sa.DateTime(timezone=True), nullable=True)) op.add_column('subscriptions', sa.Column('end_date', sa.DateTime(timezone=True), nullable=True)) op.add_column('subscriptions', sa.Column('amount_paid_cents', sa.Integer(), nullable=True)) op.add_column('subscriptions', sa.Column('manual_payment_notes', sa.Text(), nullable=True)) op.add_column('subscriptions', sa.Column('manual_payment_admin_id', UUID(as_uuid=True), nullable=True)) op.add_column('subscriptions', sa.Column('manual_payment_date', sa.DateTime(timezone=True), nullable=True)) op.add_column('subscriptions', sa.Column('payment_method', sa.String(50), nullable=True)) # Add foreign key for manual_payment_admin_id op.create_foreign_key( 'subscriptions_manual_payment_admin_id_fkey', 'subscriptions', 'users', ['manual_payment_admin_id'], ['id'] ) # Rename storage_usage.last_calculated_at to last_updated op.alter_column('storage_usage', 'last_calculated_at', new_column_name='last_updated') def downgrade() -> None: """Remove added columns (rollback)""" # Rename back op.alter_column('storage_usage', 'last_updated', new_column_name='last_calculated_at') # Drop foreign key first op.drop_constraint('subscriptions_manual_payment_admin_id_fkey', 'subscriptions', type_='foreignkey') # Drop columns from subscriptions op.drop_column('subscriptions', 'payment_method') op.drop_column('subscriptions', 'manual_payment_date') op.drop_column('subscriptions', 'manual_payment_admin_id') op.drop_column('subscriptions', 'manual_payment_notes') op.drop_column('subscriptions', 'amount_paid_cents') op.drop_column('subscriptions', 'end_date') op.drop_column('subscriptions', 'start_date')