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')