learnhouse/apps/api/migrations/versions/0314ec7791e1_payments.py

90 lines
4.5 KiB
Python

"""Payments
Revision ID: 0314ec7791e1
Revises: 040ccb1d456e
Create Date: 2024-11-23 19:41:14.064680
"""
from typing import Sequence, Union
from alembic import op
import sqlalchemy as sa # noqa: F401
import sqlmodel # noqa: F401
from sqlalchemy.dialects import postgresql
# revision identifiers, used by Alembic.
revision: str = '0314ec7791e1'
down_revision: Union[str, None] = '040ccb1d456e'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None
def upgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.create_table('paymentsconfig',
sa.Column('enabled', sa.Boolean(), nullable=False),
sa.Column('active', sa.Boolean(), nullable=False),
sa.Column('provider', postgresql.ENUM('STRIPE', name='paymentproviderenum', create_type=False), nullable=False),
sa.Column('provider_specific_id', sqlmodel.sql.sqltypes.AutoString(), nullable=True),
sa.Column('provider_config', sa.JSON(), nullable=True),
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('org_id', sa.BigInteger(), nullable=True),
sa.Column('creation_date', sa.DateTime(), nullable=False),
sa.Column('update_date', sa.DateTime(), nullable=False),
sa.ForeignKeyConstraint(['org_id'], ['organization.id'], ondelete='CASCADE'),
sa.PrimaryKeyConstraint('id')
)
op.create_table('paymentsproduct',
sa.Column('name', sqlmodel.sql.sqltypes.AutoString(), nullable=False),
sa.Column('description', sqlmodel.sql.sqltypes.AutoString(), nullable=True),
sa.Column('product_type', postgresql.ENUM('SUBSCRIPTION', 'ONE_TIME', name='paymentproducttypeenum', create_type=False), nullable=False),
sa.Column('price_type', postgresql.ENUM('CUSTOMER_CHOICE', 'FIXED_PRICE', name='paymentpricetypeenum', create_type=False), nullable=False),
sa.Column('benefits', sqlmodel.sql.sqltypes.AutoString(), nullable=False),
sa.Column('amount', sa.Float(), nullable=False),
sa.Column('currency', sqlmodel.sql.sqltypes.AutoString(), nullable=False),
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('org_id', sa.BigInteger(), nullable=True),
sa.Column('payments_config_id', sa.BigInteger(), nullable=True),
sa.Column('provider_product_id', sa.String(), nullable=True),
sa.Column('creation_date', sa.DateTime(), nullable=False),
sa.Column('update_date', sa.DateTime(), nullable=False),
sa.ForeignKeyConstraint(['org_id'], ['organization.id'], ondelete='CASCADE'),
sa.ForeignKeyConstraint(['payments_config_id'], ['paymentsconfig.id'], ondelete='CASCADE'),
sa.PrimaryKeyConstraint('id')
)
op.create_table('paymentscourse',
sa.Column('course_id', sa.BigInteger(), nullable=True),
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('payment_product_id', sa.BigInteger(), nullable=True),
sa.Column('org_id', sa.BigInteger(), nullable=True),
sa.Column('creation_date', sa.DateTime(), nullable=False),
sa.Column('update_date', sa.DateTime(), nullable=False),
sa.ForeignKeyConstraint(['course_id'], ['course.id'], ondelete='CASCADE'),
sa.ForeignKeyConstraint(['org_id'], ['organization.id'], ondelete='CASCADE'),
sa.ForeignKeyConstraint(['payment_product_id'], ['paymentsproduct.id'], ondelete='CASCADE'),
sa.PrimaryKeyConstraint('id')
)
op.create_table('paymentsuser',
sa.Column('status', postgresql.ENUM('PENDING', 'COMPLETED', 'ACTIVE', 'CANCELLED', 'FAILED', 'REFUNDED', name='paymentstatusenum', create_type=False), nullable=False),
sa.Column('provider_specific_data', sa.JSON(), nullable=True),
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('user_id', sa.BigInteger(), nullable=True),
sa.Column('org_id', sa.BigInteger(), nullable=True),
sa.Column('payment_product_id', sa.BigInteger(), nullable=True),
sa.Column('creation_date', sa.DateTime(), nullable=False),
sa.Column('update_date', sa.DateTime(), nullable=False),
sa.ForeignKeyConstraint(['org_id'], ['organization.id'], ondelete='CASCADE'),
sa.ForeignKeyConstraint(['payment_product_id'], ['paymentsproduct.id'], ondelete='CASCADE'),
sa.ForeignKeyConstraint(['user_id'], ['user.id'], ondelete='CASCADE'),
sa.PrimaryKeyConstraint('id')
)
# ### end Alembic commands ###
def downgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.drop_table('paymentsuser')
op.drop_table('paymentscourse')
op.drop_table('paymentsproduct')
op.drop_table('paymentsconfig')
# ### end Alembic commands ###