"""add purchases table Revision ID: 6517eda4a92e Revises: e005b383b5c6 Create Date: 2025-11-10 16:36:15.533520 """ from collections.abc import Sequence import sqlalchemy as sa from alembic import op # revision identifiers, used by Alembic. revision: str = '6517eda4a92e' down_revision: str | None = 'e005b383b5c6' branch_labels: str | Sequence[str] | None = None depends_on: str | Sequence[str] | None = None def upgrade() -> None: # ### commands auto generated by Alembic - please adjust! ### op.create_table( 'purchases', sa.Column('target_channel_id', sa.Uuid(), nullable=False), sa.Column('external_channel_id', sa.Uuid(), nullable=False), sa.Column('creative_id', sa.Uuid(), nullable=False), sa.Column('user_id', sa.Uuid(), nullable=False), sa.Column('placement_date', sa.DateTime(timezone=True), nullable=False), sa.Column('cost', sa.Float(), nullable=True), sa.Column('comment', sa.String(), nullable=True), sa.Column('ad_post_url', sa.String(), nullable=True), sa.Column('invite_link_type', sa.Enum('PUBLIC', 'APPROVAL', name='invitelinktype'), nullable=False), sa.Column('invite_link', sa.String(), nullable=False), sa.Column('status', sa.Enum('ACTIVE', 'ARCHIVED', name='purchasestatus'), nullable=False), sa.Column('subscriptions_count', sa.Integer(), server_default='0', nullable=False), sa.Column('views_count', sa.Integer(), nullable=True), sa.Column('id', sa.Uuid(), nullable=False), sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False), sa.Column('updated_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False), sa.Column('deleted_at', sa.DateTime(timezone=True), nullable=True), sa.ForeignKeyConstraint( ['creative_id'], ['creatives.id'], ), sa.ForeignKeyConstraint( ['external_channel_id'], ['externalchannels.id'], ), sa.ForeignKeyConstraint( ['target_channel_id'], ['targetchannels.id'], ), sa.ForeignKeyConstraint( ['user_id'], ['users.id'], ), sa.PrimaryKeyConstraint('id'), ) op.create_index(op.f('ix_purchases_creative_id'), 'purchases', ['creative_id'], unique=False) op.create_index(op.f('ix_purchases_external_channel_id'), 'purchases', ['external_channel_id'], unique=False) op.create_index(op.f('ix_purchases_target_channel_id'), 'purchases', ['target_channel_id'], unique=False) op.create_index(op.f('ix_purchases_user_id'), 'purchases', ['user_id'], unique=False) # ### end Alembic commands ### def downgrade() -> None: # ### commands auto generated by Alembic - please adjust! ### op.drop_index(op.f('ix_purchases_user_id'), table_name='purchases') op.drop_index(op.f('ix_purchases_target_channel_id'), table_name='purchases') op.drop_index(op.f('ix_purchases_external_channel_id'), table_name='purchases') op.drop_index(op.f('ix_purchases_creative_id'), table_name='purchases') op.drop_table('purchases') # ### end Alembic commands ###