From 9efe347d90f807e90f41890141d325f2bdb24709 Mon Sep 17 00:00:00 2001 From: ilinardic <62882049+ilinardic22@users.noreply.github.com> Date: Wed, 29 Nov 2023 12:14:25 +0100 Subject: [PATCH 1/3] Update order details table --- .../7a341d712aa5_order_detail_changes.py | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 db_migrations/7a341d712aa5_order_detail_changes.py diff --git a/db_migrations/7a341d712aa5_order_detail_changes.py b/db_migrations/7a341d712aa5_order_detail_changes.py new file mode 100644 index 0000000..0e5ad4c --- /dev/null +++ b/db_migrations/7a341d712aa5_order_detail_changes.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 From 3072035f0a86874fce11a1b36c1a48f9e1197fe0 Mon Sep 17 00:00:00 2001 From: ilinardic <62882049+ilinardic22@users.noreply.github.com> Date: Wed, 29 Nov 2023 12:23:28 +0100 Subject: [PATCH 2/3] Remove downgrade from order details table --- .../7a341d712aa5_order_detail_changes.py | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/db_migrations/7a341d712aa5_order_detail_changes.py b/db_migrations/7a341d712aa5_order_detail_changes.py index 0e5ad4c..cfd81e2 100644 --- a/db_migrations/7a341d712aa5_order_detail_changes.py +++ b/db_migrations/7a341d712aa5_order_detail_changes.py @@ -35,17 +35,17 @@ def upgrade() -> None: 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 +# 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 From 0731fb42e34da1229f3ee026e43a4c4e1598a804 Mon Sep 17 00:00:00 2001 From: ilinardic <62882049+ilinardic22@users.noreply.github.com> Date: Wed, 29 Nov 2023 12:30:17 +0100 Subject: [PATCH 3/3] Alocate changes file to versions folder --- .../7a341d712aa5_order_detail_changes.py | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) rename db_migrations/{ => versions}/7a341d712aa5_order_detail_changes.py (64%) diff --git a/db_migrations/7a341d712aa5_order_detail_changes.py b/db_migrations/versions/7a341d712aa5_order_detail_changes.py similarity index 64% rename from db_migrations/7a341d712aa5_order_detail_changes.py rename to db_migrations/versions/7a341d712aa5_order_detail_changes.py index cfd81e2..0e5ad4c 100644 --- a/db_migrations/7a341d712aa5_order_detail_changes.py +++ b/db_migrations/versions/7a341d712aa5_order_detail_changes.py @@ -35,17 +35,17 @@ def upgrade() -> None: 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 +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