"""

Revision ID: 0128_noti_to_sms_sender
Revises: 0127_remove_unique_constraint
Create Date: 2017-10-26 15:17:00.752706

"""
from alembic import op
import sqlalchemy as sa
from sqlalchemy.dialects import postgresql

revision = '0128_noti_to_sms_sender'
down_revision = '0127_remove_unique_constraint'


def upgrade():
    op.create_index(op.f('ix_service_letter_contacts_service_id'), 'service_letter_contacts', ['service_id'],
                    unique=False)
    op.drop_index('ix_service_letter_contact_service_id', table_name='service_letter_contacts')
    op.create_index(op.f('ix_service_sms_senders_service_id'), 'service_sms_senders', ['service_id'], unique=False)
    op.execute(
        'ALTER TABLE templates_history ALTER COLUMN template_type TYPE template_type USING template_type::template_type')

    # new table
    op.create_table('notification_to_sms_sender',
    sa.Column('notification_id', postgresql.UUID(as_uuid=True), nullable=False),
    sa.Column('service_sms_sender_id', postgresql.UUID(as_uuid=True), nullable=False),
    sa.ForeignKeyConstraint(['notification_id'], ['notifications.id'], ),
    sa.ForeignKeyConstraint(['service_sms_sender_id'], ['service_sms_senders.id'], ),
    sa.PrimaryKeyConstraint('notification_id', 'service_sms_sender_id')
    )
    op.create_index(op.f('ix_notification_to_sms_sender_notification_id'), 'notification_to_sms_sender', ['notification_id'], unique=True)
    op.create_index(op.f('ix_notification_to_sms_sender_service_sms_sender_id'), 'notification_to_sms_sender', ['service_sms_sender_id'], unique=False)


def downgrade():
    op.drop_index(op.f('ix_service_sms_senders_service_id'), table_name='service_sms_senders')
    op.create_index('ix_service_letter_contact_service_id', 'service_letter_contacts', ['service_id'], unique=False)
    op.drop_index(op.f('ix_service_letter_contacts_service_id'), table_name='service_letter_contacts')
    op.alter_column('templates_history', 'template_type',
                    type_=sa.VARCHAR(),
                    existing_nullable=False)

    op.drop_table('notification_to_sms_sender')
