"""migrate_datatime_formats Revision ID: bbb653d9454f Revises: b0fd9f4bf611 Create Date: 2023-02-20 12:44:30.300091 """ from alembic import op import sqlalchemy as sa from sqlalchemy.dialects import postgresql from migrations.utils import get_table # revision identifiers, used by Alembic. revision = 'bbb653d9454f' down_revision = 'b0fd9f4bf611' branch_labels = None depends_on = None date_time_mappings = ["MM/DD/YY, hh:mm A", "MM/DD/YY, HH:mm", "DD/MM/YY, hh:mm A", "DD/MM/YY, HH:mm"] def upgrade(): op.alter_column('User', 'date_time_format', new_column_name='date_time_format_old') op.add_column( 'User', sa.Column('date_time_format', sa.SmallInteger(), nullable=False, server_default="1") ) bind = op.get_bind() user_table = get_table(bind, "User") for count, format_map in enumerate(date_time_mappings, start=1): op.execute( user_table.update().where(user_table.c.date_time_format_old == format_map).values( date_time_format=count ) ) op.drop_column('User', 'date_time_format_old') def downgrade(): op.alter_column('User', 'date_time_format', new_column_name='date_time_format_old') op.add_column( 'User', sa.Column('date_time_format', sa.String(), nullable=False, server_default='MM/DD/YY, hh:mm A') ) bind = op.get_bind() user_table = get_table(bind, "User") for count, format_map in enumerate(date_time_mappings, start=1): op.execute( user_table.update().where(user_table.c.date_time_format_old == count).values( date_time_format=format_map ) ) op.drop_column('User', 'date_time_format_old')