"""

Revision ID: 0332_broadcast_provider_msg
Revises: 0331_add_broadcast_org
Create Date: 2020-10-26 16:28:11.917468

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

revision = "0332_broadcast_provider_msg"
down_revision = "0331_add_broadcast_org"

STATUSES = [
    "technical-failure",
    "sending",
    "returned-ack",
    "returned-error",
]


def upgrade():

    broadcast_provider_message_status_type = op.create_table(
        "broadcast_provider_message_status_type",
        sa.Column("name", sa.String(), nullable=False),
        sa.PrimaryKeyConstraint("name"),
    )
    op.bulk_insert(broadcast_provider_message_status_type, [{"name": status} for status in STATUSES])

    # ### commands auto generated by Alembic - please adjust! ###
    op.create_table(
        "broadcast_provider_message",
        sa.Column("id", postgresql.UUID(as_uuid=True), nullable=False),
        sa.Column("broadcast_event_id", postgresql.UUID(as_uuid=True), nullable=True),
        sa.Column("provider", sa.String(), nullable=True),
        sa.Column("status", sa.String(), nullable=True),
        sa.Column("created_at", sa.DateTime(), nullable=False),
        sa.Column("updated_at", sa.DateTime(), nullable=True),
        sa.ForeignKeyConstraint(
            ["broadcast_event_id"],
            ["broadcast_event.id"],
        ),
        sa.PrimaryKeyConstraint("id"),
        sa.UniqueConstraint("broadcast_event_id", "provider"),
    )


def downgrade():
    op.drop_table("broadcast_provider_message")
    op.drop_table("broadcast_provider_message_status_type")
