From bfcf8e5175df4261887420b049e3ee291d4f8060 Mon Sep 17 00:00:00 2001 From: ilinardic <62882049+ilinardic22@users.noreply.github.com> Date: Thu, 30 Nov 2023 10:04:51 +0100 Subject: [PATCH] Add break gable script --- db_migrations/versions/break_gable.py | 51 +++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 db_migrations/versions/break_gable.py diff --git a/db_migrations/versions/break_gable.py b/db_migrations/versions/break_gable.py new file mode 100644 index 0000000..0e5ad4c --- /dev/null +++ b/db_migrations/versions/break_gable.py @@ -0,0 +1,51 @@ +"""order_detail changes + +Revision ID: 7a341d712aa5 +Revises: 78da3a78bfd6 +Create Date: 2023-09-29 13:22:35.204135 + +""" +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision: str = '7a341d712aa5' +down_revision: Union[str, None] = '78da3a78bfd6' +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # Make the vendor optional + op.alter_column( + 'order_details', + 'vendor_id', + nullable=True, + ) + + # Convert existing values to integers (for example, if representing cents) + op.execute('UPDATE order_details SET unit_price = ROUND(unit_price * 100)') + op.execute('UPDATE order_details SET total_price = ROUND(total_price * 100)') + + # Alter the column type + op.alter_column('order_details', 'unit_price', type_=sa.Integer) + op.alter_column('order_details', 'total_price', type_=sa.Integer) + + +def downgrade() -> None: + op.alter_column( + 'order_details', + 'vendor_id', + nullable=False, + ) + + # Alter the column type back to Numeric + op.alter_column('order_details', 'unit_price', type_=sa.Numeric(10, 2)) + op.alter_column('order_details', 'total_price', type_=sa.Numeric(10, 2)) + + # Convert integer values back to their decimal representations + op.execute('UPDATE order_details SET unit_price = total_price / 100.0') + op.execute('UPDATE order_details SET total_price = total_price / 100.0') \ No newline at end of file