forked from andika/membership-be
Merge pull request 'Subscription and Storage data mismatch' (#7) from dev into loaf-prod
Reviewed-on: andika/membership-be#7
This commit is contained in:
63
alembic/versions/005_fix_subscriptions_and_storage.py
Normal file
63
alembic/versions/005_fix_subscriptions_and_storage.py
Normal file
@@ -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')
|
||||||
Reference in New Issue
Block a user