mirror of
https://github.com/rzmk/learnhouse.git
synced 2025-12-19 04:19:25 +00:00
feat: UI improvements & migration script
This commit is contained in:
parent
e464b30147
commit
6cd1cf7e9c
5 changed files with 154 additions and 63 deletions
90
apps/api/migrations/versions/0314ec7791e1_payments.py
Normal file
90
apps/api/migrations/versions/0314ec7791e1_payments.py
Normal file
|
|
@ -0,0 +1,90 @@
|
|||
"""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 ###
|
||||
Loading…
Add table
Add a link
Reference in a new issue