From 25b1cb916a5d62a1c0080469c23cff453bf399ce Mon Sep 17 00:00:00 2001 From: Koncept Kit <63216427+konceptkit@users.noreply.github.com> Date: Sun, 4 Jan 2026 22:22:37 +0700 Subject: [PATCH] Subscription and Storage data mismatch --- .../005_fix_subscriptions_and_storage.py | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 alembic/versions/005_fix_subscriptions_and_storage.py diff --git a/alembic/versions/005_fix_subscriptions_and_storage.py b/alembic/versions/005_fix_subscriptions_and_storage.py new file mode 100644 index 0000000..0af8cfb --- /dev/null +++ b/alembic/versions/005_fix_subscriptions_and_storage.py @@ -0,0 +1,63 @@ +"""fix_subscriptions_and_storage + +Revision ID: 005_fix_subscriptions_and_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_subscriptions_and_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')