Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
176 changes: 176 additions & 0 deletions app/migrations/versions/067f32395ad5_initialize_models.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,176 @@
"""initialize models

Revision ID: 067f32395ad5
Revises:
Create Date: 2025-04-22 14:39:11.438511

"""
from typing import Sequence, Union

from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision: str = '067f32395ad5'
down_revision: Union[str, None] = None
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('contracts',
sa.Column('uuid', sa.UUID(), nullable=False),
sa.Column('key', sa.Enum('AGB_APP_ZUM_DOC_PATIENT', 'AGB_MEDIQUU_CONNECT', 'AGB_APP_ZUM_DOC', 'AGB_MEDIQUU_NETZMANAGER', 'AGB_MEDIQUU_CHAT', 'PRIVACY_CONCEPT', 'PRIVACY_CONCEPT_TASKS', 'AVV', 'AVV_TASKS', 'NDA', 'SUB', 'TOM', name='contractkeyenum'), nullable=False),
sa.Column('version', sa.String(), nullable=False),
sa.Column('url', sa.String(), nullable=True),
sa.Column('created_at', sa.DateTime(), nullable=True),
sa.PrimaryKeyConstraint('uuid')
)
op.create_table('customers',
sa.Column('uuid', sa.UUID(), nullable=False),
sa.Column('name', sa.String(), nullable=False),
sa.Column('email', sa.String(), nullable=False),
sa.Column('website_url', sa.String(), nullable=True),
sa.Column('phone_number', sa.String(), nullable=True),
sa.Column('address', sa.String(), nullable=False),
sa.Column('house_number', sa.String(), nullable=False),
sa.Column('care_of', sa.String(), nullable=True),
sa.Column('postal_code', sa.String(), nullable=False),
sa.Column('city', sa.String(), nullable=False),
sa.Column('country', sa.String(), nullable=False),
sa.Column('created_at', sa.DateTime(), nullable=True),
sa.Column('updated_at', sa.DateTime(), nullable=True),
sa.PrimaryKeyConstraint('uuid'),
sa.UniqueConstraint('email')
)
op.create_table('products',
sa.Column('uuid', sa.UUID(), nullable=False),
sa.Column('name', sa.String(), nullable=False),
sa.Column('description', sa.Text(), nullable=True),
sa.Column('image_url', sa.Text(), nullable=True),
sa.Column('created_at', sa.DateTime(), nullable=True),
sa.Column('updated_at', sa.DateTime(), nullable=True),
sa.PrimaryKeyConstraint('uuid')
)
op.create_table('messages',
sa.Column('uuid', sa.UUID(), nullable=False),
sa.Column('customer_uuid', sa.UUID(), nullable=False),
sa.Column('subject', sa.String(), nullable=False),
sa.Column('message', sa.Text(), nullable=False),
sa.Column('status', sa.Enum('UNREAD', 'READ', 'ARCHIVED', name='messagestatusenum'), nullable=False),
sa.Column('created_at', sa.DateTime(), nullable=True),
sa.Column('updated_at', sa.DateTime(), nullable=True),
sa.ForeignKeyConstraint(['customer_uuid'], ['customers.uuid'], ),
sa.PrimaryKeyConstraint('uuid')
)
op.create_table('product_contracts',
sa.Column('uuid', sa.UUID(), nullable=False),
sa.Column('product_uuid', sa.UUID(), nullable=False),
sa.Column('contract_uuid', sa.UUID(), nullable=False),
sa.ForeignKeyConstraint(['contract_uuid'], ['contracts.uuid'], ),
sa.ForeignKeyConstraint(['product_uuid'], ['products.uuid'], ),
sa.PrimaryKeyConstraint('uuid')
)
op.create_table('product_plans',
sa.Column('uuid', sa.UUID(), nullable=False),
sa.Column('product_uuid', sa.UUID(), nullable=False),
sa.Column('type', sa.Enum('ONCE', 'RECURRING', 'LIFETIME', 'TRIAL', name='plantypeenum'), nullable=False),
sa.Column('name', sa.String(), nullable=False),
sa.Column('cost_euro', sa.Numeric(), nullable=False),
sa.Column('recurring_month', sa.Integer(), nullable=True),
sa.Column('created_at', sa.DateTime(), nullable=True),
sa.Column('updated_at', sa.DateTime(), nullable=True),
sa.ForeignKeyConstraint(['product_uuid'], ['products.uuid'], ),
sa.PrimaryKeyConstraint('uuid')
)
op.create_table('users',
sa.Column('uuid', sa.UUID(), nullable=False),
sa.Column('customer_uuid', sa.UUID(), nullable=True),
sa.Column('name', sa.String(), nullable=False),
sa.Column('email', sa.String(), nullable=False),
sa.Column('role', sa.Enum('ADMIN', 'NORMAL', name='roleenum'), nullable=False),
sa.Column('created_at', sa.DateTime(), nullable=True),
sa.Column('updated_at', sa.DateTime(), nullable=True),
sa.ForeignKeyConstraint(['customer_uuid'], ['customers.uuid'], ),
sa.PrimaryKeyConstraint('uuid'),
sa.UniqueConstraint('email')
)
op.create_table('vouchers',
sa.Column('uuid', sa.UUID(), nullable=False),
sa.Column('code', sa.String(), nullable=False),
sa.Column('description', sa.Text(), nullable=True),
sa.Column('product_plan_uuid', sa.UUID(), nullable=False),
sa.Column('discount_percentage', sa.Numeric(), nullable=True),
sa.Column('discount_fixed_amount', sa.Numeric(), nullable=True),
sa.Column('valid_from', sa.DateTime(), nullable=False),
sa.Column('valid_until', sa.DateTime(), nullable=False),
sa.Column('max_redemptions', sa.Integer(), nullable=False),
sa.Column('redeemed_count', sa.Integer(), nullable=True),
sa.Column('created_at', sa.DateTime(), nullable=True),
sa.Column('updated_at', sa.DateTime(), nullable=True),
sa.ForeignKeyConstraint(['product_plan_uuid'], ['product_plans.uuid'], ),
sa.PrimaryKeyConstraint('uuid'),
sa.UniqueConstraint('code')
)
op.create_table('customer_products',
sa.Column('uuid', sa.UUID(), nullable=False),
sa.Column('customer_uuid', sa.UUID(), nullable=False),
sa.Column('product_uuid', sa.UUID(), nullable=False),
sa.Column('product_plan_uuid', sa.UUID(), nullable=False),
sa.Column('status', sa.Enum('TRIALING', 'ACTIVE', 'PENDING_ACTIVATION', 'PENDING_PAYMENT', 'CANCELLATION_SCHEDULED', 'CANCELED', 'EXPIRED', 'REFUNDED', name='customerproductstatusenum'), nullable=False),
sa.Column('seats', sa.Integer(), nullable=True),
sa.Column('start_date', sa.DateTime(), nullable=False),
sa.Column('end_date', sa.DateTime(), nullable=False),
sa.Column('next_payment_date', sa.DateTime(), nullable=True),
sa.Column('voucher_uuid', sa.UUID(), nullable=True),
sa.Column('cancellation_date', sa.DateTime(), nullable=True),
sa.Column('created_at', sa.DateTime(), nullable=True),
sa.Column('updated_at', sa.DateTime(), nullable=True),
sa.ForeignKeyConstraint(['customer_uuid'], ['customers.uuid'], ),
sa.ForeignKeyConstraint(['product_plan_uuid'], ['product_plans.uuid'], ),
sa.ForeignKeyConstraint(['product_uuid'], ['products.uuid'], ),
sa.ForeignKeyConstraint(['voucher_uuid'], ['vouchers.uuid'], ),
sa.PrimaryKeyConstraint('uuid')
)
op.create_table('customer_product_contracts',
sa.Column('uuid', sa.UUID(), nullable=False),
sa.Column('product_customer_uuid', sa.UUID(), nullable=False),
sa.Column('contract_uuid', sa.UUID(), nullable=False),
sa.Column('accepted_at', sa.DateTime(), nullable=False),
sa.ForeignKeyConstraint(['contract_uuid'], ['contracts.uuid'], ),
sa.ForeignKeyConstraint(['product_customer_uuid'], ['customer_products.uuid'], ),
sa.PrimaryKeyConstraint('uuid')
)
op.create_table('invoices',
sa.Column('uuid', sa.UUID(), nullable=False),
sa.Column('customer_uuid', sa.UUID(), nullable=False),
sa.Column('customer_product_uuid', sa.UUID(), nullable=False),
sa.Column('title', sa.String(), nullable=True),
sa.Column('status', sa.Enum('PENDING', 'PAID', 'OVERDUE', name='invoicestatusenum'), nullable=False),
sa.Column('date', sa.DateTime(), nullable=False),
sa.Column('total_amount', sa.Numeric(), nullable=False),
sa.Column('created_at', sa.DateTime(), nullable=True),
sa.Column('updated_at', sa.DateTime(), nullable=True),
sa.ForeignKeyConstraint(['customer_product_uuid'], ['customer_products.uuid'], ),
sa.ForeignKeyConstraint(['customer_uuid'], ['customers.uuid'], ),
sa.PrimaryKeyConstraint('uuid')
)
# ### end Alembic commands ###


def downgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.drop_table('invoices')
op.drop_table('customer_product_contracts')
op.drop_table('customer_products')
op.drop_table('vouchers')
op.drop_table('users')
op.drop_table('product_plans')
op.drop_table('product_contracts')
op.drop_table('messages')
op.drop_table('products')
op.drop_table('customers')
op.drop_table('contracts')
# ### end Alembic commands ###

This file was deleted.

This file was deleted.

Loading
Loading