forked from gabledata/tutorial
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbreak_gable.py
More file actions
51 lines (38 loc) · 1.51 KB
/
Copy pathbreak_gable.py
File metadata and controls
51 lines (38 loc) · 1.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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')