""" upgrade voteinfo integers Within `aurweb/schema.py`, these were previously forced to use TINYINT(3, unsigned=True) types. When generating with dummy data, it is very easy to bypass 3-character TU counts; in addition, this is possible in the future on production, and so we should deal with this case regardless. All previous TINYINT(3, unsigned=True) typed columns are upgraded INTEGER(unsigned=True) types, supporting up to 4-bytes of active TUs and votes for one particular proposal. Revision ID: be7adae47ac3 Revises: 56e2ce8e2ffa Create Date: 2022-01-06 14:37:07.899778 """ from alembic import op from sqlalchemy.dialects.mysql import INTEGER, TINYINT # revision identifiers, used by Alembic. revision = 'be7adae47ac3' down_revision = '56e2ce8e2ffa' branch_labels = None depends_on = None # Upgrade to INTEGER(unsigned=True); supports 4-byte values. UPGRADE_T = INTEGER(unsigned=True) # Downgrade to TINYINT(3, unsigned=True); supports 1-byte values. DOWNGRADE_T = TINYINT(3, unsigned=True) def upgrade(): """ Upgrade 'Yes', 'No', 'Abstain' and 'ActiveTUs' to unsigned INTEGER. """ op.alter_column("TU_VoteInfo", "Yes", type_=UPGRADE_T) op.alter_column("TU_VoteInfo", "No", type_=UPGRADE_T) op.alter_column("TU_VoteInfo", "Abstain", type_=UPGRADE_T) op.alter_column("TU_VoteInfo", "ActiveTUs", type_=UPGRADE_T) def downgrade(): """ Downgrade 'Yes', 'No', 'Abstain' and 'ActiveTUs' to unsigned TINYINT. """ op.alter_column("TU_VoteInfo", "ActiveTUs", type_=DOWNGRADE_T) op.alter_column("TU_VoteInfo", "Abstain", type_=DOWNGRADE_T) op.alter_column("TU_VoteInfo", "No", type_=DOWNGRADE_T) op.alter_column("TU_VoteInfo", "Yes", type_=DOWNGRADE_T)