"""refactor fields

Revision ID: 9ea6d7a51c89
Revises: f8e8150cbdb7
Create Date: 2021-04-28 14:18:17.389119

"""
from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision = '9ea6d7a51c89'
down_revision = 'f8e8150cbdb7'
branch_labels = None
depends_on = None


def upgrade():
    # ### commands auto generated by Alembic - please adjust! ###
    op.add_column('cmf_notify', sa.Column('comments', sa.TEXT(), nullable=True))

    op.add_column('cmf_notify', sa.Column('confirmed', sa.Boolean(), nullable=True))
    op.execute('update cmf_notify set confirmed=false')
    op.alter_column('cmf_notify', 'confirmed', nullable=False)

    op.add_column('cmf_notify', sa.Column('obj_code', sa.String(length=64), nullable=True))
    op.add_column('cmf_notify', sa.Column('obj_href', sa.String(length=64), nullable=True))
    op.add_column('cmf_notify', sa.Column('obj_ui_name', sa.String(length=64), nullable=True))

    op.add_column('cmf_notify', sa.Column('priority', sa.String(length=32), nullable=True))
    op.execute("update cmf_notify set priority = '0'")
    op.alter_column('cmf_notify', 'priority', nullable=False)

    op.alter_column('cmf_notify', 'strikethrough',
               existing_type=sa.BOOLEAN(),
               nullable=True)

    op.execute("update cmf_notify set strikethrough = false")
    op.alter_column('cmf_notify', 'strikethrough', nullable=False)

    op.alter_column('cmf_notify', 'unread_cnt',
               existing_type=sa.INTEGER(),
               nullable=True)

    op.execute("update cmf_notify set unread_cnt = 0")
    op.alter_column('cmf_notify', 'unread_cnt', nullable=False)

    op.drop_index('ix_cmf_notify_confirm_close', table_name='cmf_notify')
    op.create_index(op.f('ix_cmf_notify_confirmed'), 'cmf_notify', ['confirmed'], unique=False)
    op.create_index(op.f('ix_cmf_notify_obj_code'), 'cmf_notify', ['obj_code'], unique=False)
    op.create_index(op.f('ix_cmf_notify_obj_href'), 'cmf_notify', ['obj_href'], unique=False)
    op.create_index(op.f('ix_cmf_notify_obj_ui_name'), 'cmf_notify', ['obj_ui_name'], unique=False)
    op.drop_column('cmf_notify', 'obj_status_type')
    op.drop_column('cmf_notify', 'obj_comments')
    op.drop_column('cmf_notify', 'confirm_close')
    # ### end Alembic commands ###


def downgrade():
    # ### commands auto generated by Alembic - please adjust! ###
    op.add_column('cmf_notify', sa.Column('confirm_close', sa.BOOLEAN(), autoincrement=False, nullable=True))
    op.add_column('cmf_notify', sa.Column('obj_comments', sa.TEXT(), autoincrement=False, nullable=True))
    op.add_column('cmf_notify', sa.Column('obj_status_type', sa.VARCHAR(length=32), autoincrement=False, nullable=True))
    op.drop_index(op.f('ix_cmf_notify_obj_ui_name'), table_name='cmf_notify')
    op.drop_index(op.f('ix_cmf_notify_obj_href'), table_name='cmf_notify')
    op.drop_index(op.f('ix_cmf_notify_obj_code'), table_name='cmf_notify')
    op.drop_index(op.f('ix_cmf_notify_confirmed'), table_name='cmf_notify')
    op.create_index('ix_cmf_notify_confirm_close', 'cmf_notify', ['confirm_close'], unique=False)
    op.alter_column('cmf_notify', 'unread_cnt',
               existing_type=sa.INTEGER(),
               nullable=True)
    op.alter_column('cmf_notify', 'strikethrough',
               existing_type=sa.BOOLEAN(),
               nullable=True)
    op.drop_column('cmf_notify', 'priority')
    op.drop_column('cmf_notify', 'obj_ui_name')
    op.drop_column('cmf_notify', 'obj_href')
    op.drop_column('cmf_notify', 'obj_code')
    op.drop_column('cmf_notify', 'confirmed')
    op.drop_column('cmf_notify', 'comments')
    # ### end Alembic commands ###
