forked from andika/membership-be
77 lines
3.7 KiB
Python
77 lines
3.7 KiB
Python
"""add_stripe_transaction_metadata
|
|
|
|
Revision ID: 956ea1628264
|
|
Revises: ec4cb4a49cde
|
|
Create Date: 2026-01-20 22:00:01.806931
|
|
|
|
"""
|
|
from typing import Sequence, Union
|
|
|
|
from alembic import op
|
|
import sqlalchemy as sa
|
|
|
|
|
|
# revision identifiers, used by Alembic.
|
|
revision: str = '956ea1628264'
|
|
down_revision: Union[str, None] = 'ec4cb4a49cde'
|
|
branch_labels: Union[str, Sequence[str], None] = None
|
|
depends_on: Union[str, Sequence[str], None] = None
|
|
|
|
|
|
def upgrade() -> None:
|
|
# Add Stripe transaction metadata to subscriptions table
|
|
op.add_column('subscriptions', sa.Column('stripe_payment_intent_id', sa.String(), nullable=True))
|
|
op.add_column('subscriptions', sa.Column('stripe_charge_id', sa.String(), nullable=True))
|
|
op.add_column('subscriptions', sa.Column('stripe_invoice_id', sa.String(), nullable=True))
|
|
op.add_column('subscriptions', sa.Column('payment_completed_at', sa.DateTime(timezone=True), nullable=True))
|
|
op.add_column('subscriptions', sa.Column('card_last4', sa.String(4), nullable=True))
|
|
op.add_column('subscriptions', sa.Column('card_brand', sa.String(20), nullable=True))
|
|
op.add_column('subscriptions', sa.Column('stripe_receipt_url', sa.String(), nullable=True))
|
|
|
|
# Add indexes for Stripe transaction IDs in subscriptions
|
|
op.create_index('idx_subscriptions_payment_intent', 'subscriptions', ['stripe_payment_intent_id'])
|
|
op.create_index('idx_subscriptions_charge_id', 'subscriptions', ['stripe_charge_id'])
|
|
op.create_index('idx_subscriptions_invoice_id', 'subscriptions', ['stripe_invoice_id'])
|
|
|
|
# Add Stripe transaction metadata to donations table
|
|
op.add_column('donations', sa.Column('stripe_charge_id', sa.String(), nullable=True))
|
|
op.add_column('donations', sa.Column('stripe_customer_id', sa.String(), nullable=True))
|
|
op.add_column('donations', sa.Column('payment_completed_at', sa.DateTime(timezone=True), nullable=True))
|
|
op.add_column('donations', sa.Column('card_last4', sa.String(4), nullable=True))
|
|
op.add_column('donations', sa.Column('card_brand', sa.String(20), nullable=True))
|
|
op.add_column('donations', sa.Column('stripe_receipt_url', sa.String(), nullable=True))
|
|
|
|
# Add indexes for Stripe transaction IDs in donations
|
|
op.create_index('idx_donations_payment_intent', 'donations', ['stripe_payment_intent_id'])
|
|
op.create_index('idx_donations_charge_id', 'donations', ['stripe_charge_id'])
|
|
op.create_index('idx_donations_customer_id', 'donations', ['stripe_customer_id'])
|
|
|
|
|
|
def downgrade() -> None:
|
|
# Remove indexes from donations
|
|
op.drop_index('idx_donations_customer_id', table_name='donations')
|
|
op.drop_index('idx_donations_charge_id', table_name='donations')
|
|
op.drop_index('idx_donations_payment_intent', table_name='donations')
|
|
|
|
# Remove columns from donations
|
|
op.drop_column('donations', 'stripe_receipt_url')
|
|
op.drop_column('donations', 'card_brand')
|
|
op.drop_column('donations', 'card_last4')
|
|
op.drop_column('donations', 'payment_completed_at')
|
|
op.drop_column('donations', 'stripe_customer_id')
|
|
op.drop_column('donations', 'stripe_charge_id')
|
|
|
|
# Remove indexes from subscriptions
|
|
op.drop_index('idx_subscriptions_invoice_id', table_name='subscriptions')
|
|
op.drop_index('idx_subscriptions_charge_id', table_name='subscriptions')
|
|
op.drop_index('idx_subscriptions_payment_intent', table_name='subscriptions')
|
|
|
|
# Remove columns from subscriptions
|
|
op.drop_column('subscriptions', 'stripe_receipt_url')
|
|
op.drop_column('subscriptions', 'card_brand')
|
|
op.drop_column('subscriptions', 'card_last4')
|
|
op.drop_column('subscriptions', 'payment_completed_at')
|
|
op.drop_column('subscriptions', 'stripe_invoice_id')
|
|
op.drop_column('subscriptions', 'stripe_charge_id')
|
|
op.drop_column('subscriptions', 'stripe_payment_intent_id')
|