HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //home/arjun/projects/buyercall/buyercall/migrations/versions/b988ba4de68c_create_email_table.py
"""Create email table and add email fk to partnership account

Revision ID: b988ba4de68c
Revises: 22c450205521
Create Date: 2022-04-19 09:55:50.097669

"""

# revision identifiers, used by Alembic.
revision = 'b988ba4de68c'
down_revision = '22c450205521'
branch_labels = None
depends_on = None

from alembic import op
import sqlalchemy as sa
from sqlalchemy.dialects import postgresql
from buyercall.lib.util_sqlalchemy import AwareDateTime


def upgrade():

    op.create_table('email',
        sa.Column('created_on', AwareDateTime(), nullable=False),
        sa.Column('updated_on', AwareDateTime(), nullable=False),
        sa.Column('id', sa.Integer(), nullable=False),
        sa.Column('sid', postgresql.UUID(as_uuid=True), nullable=True),
        sa.Column('first_name', sa.String(length=50), nullable=True),
        sa.Column('last_name', sa.String(length=50), nullable=True),
        sa.Column('email', sa.String(length=120), nullable=True),
        sa.Column('source', sa.Integer(), nullable=False),
        sa.Column('channel', sa.Integer(), nullable=False),
        sa.Column('is_inbound', sa.Boolean(), server_default='true', nullable=False),
        sa.Column('is_forward', sa.Boolean(), server_default='false', nullable=False),
        sa.Column('contact_id', sa.Integer(), nullable=True),
        sa.Column('meta_data', postgresql.JSON(astext_type=sa.Text()), server_default='{}', nullable=False),
        sa.Column('partnership_account_id', sa.Integer(), nullable=False),
        sa.Column('recipients', postgresql.ARRAY(sa.String(length=320)), nullable=True),
        sa.ForeignKeyConstraint(['contact_id'], ['contacts.id'], onupdate='CASCADE', ondelete='SET NULL'),
        sa.ForeignKeyConstraint(['partnership_account_id'], ['partnership_accounts.id'], onupdate='CASCADE', ondelete='CASCADE'),
        sa.ForeignKeyConstraint(['source'], ['source.id'], onupdate='CASCADE', ondelete='CASCADE'),        
        sa.ForeignKeyConstraint(['channel'], ['channel.id'], onupdate='CASCADE', ondelete='CASCADE'),        
        sa.PrimaryKeyConstraint('id')
    )
    op.create_index(op.f('ix_email_contact_id'), 'email', ['contact_id'], unique=False)
    op.create_index(op.f('ix_email_email'), 'email', ['email'], unique=False)
    op.create_index(op.f('ix_email_partnership_account_id'), 'email', ['partnership_account_id'], unique=False)
    op.create_index(op.f('ix_email_sid'), 'email', ['sid'], unique=True)
    op.create_index(op.f('ix_email_source'), 'email', ['source'], unique=False)
    op.create_index(op.f('ix_email_channel'), 'email', ['channel'], unique=False)
    
    op.add_column('partnership_accounts', sa.Column('email', sa.String(length=320), server_default='', nullable=False))
    
def downgrade():    
    op.drop_column('partnership_accounts', 'email')
    
    op.drop_index(op.f('ix_email_channel'), table_name='email')
    op.drop_index(op.f('ix_email_source'), table_name='email')
    op.drop_index(op.f('ix_email_sid'), table_name='email')
    op.drop_index(op.f('ix_email_partnership_account_id'), table_name='email')
    op.drop_index(op.f('ix_email_email'), table_name='email')
    op.drop_index(op.f('ix_email_contact_id'), table_name='email')
    op.drop_table('email')