Skip to content

Commit

Permalink
fix: Combine column alters into one query
Browse files Browse the repository at this point in the history
  • Loading branch information
jonathan-d-zhang committed Aug 5, 2024
1 parent 80fa49b commit ca6df1d
Showing 1 changed file with 18 additions and 63 deletions.
81 changes: 18 additions & 63 deletions alembic/versions/56627251b8c0_make_datetimes_tz_aware.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,6 @@
"""

from alembic import op
import sqlalchemy as sa
from sqlalchemy.dialects import postgresql


# revision identifiers, used by Alembic.
revision = "56627251b8c0"
Expand All @@ -19,66 +16,24 @@


def upgrade() -> None:
op.alter_column(
"scans",
"queued_at",
existing_type=postgresql.TIMESTAMP(),
type_=sa.DateTime(timezone=True),
existing_nullable=True,
postgresql_using="queued_at AT TIME ZONE 'UTC'",
)
op.alter_column(
"scans",
"pending_at",
existing_type=postgresql.TIMESTAMP(),
type_=sa.DateTime(timezone=True),
existing_nullable=True,
postgresql_using="pending_at AT TIME ZONE 'UTC'",
)
op.alter_column(
"scans",
"finished_at",
existing_type=postgresql.TIMESTAMP(),
type_=sa.DateTime(timezone=True),
existing_nullable=True,
postgresql_using="finished_at AT TIME ZONE 'UTC'",
)
op.alter_column(
"scans",
"reported_at",
existing_type=postgresql.TIMESTAMP(),
type_=sa.DateTime(timezone=True),
existing_nullable=True,
postgresql_using="reported_at AT TIME ZONE 'UTC'",
)
op.execute("""\
ALTER TABLE scans
ALTER COLUMN queued_at TYPE TIMESTAMP WITH TIME ZONE USING queued_at AT TIME ZONE 'UTC',
ALTER COLUMN pending_at TYPE TIMESTAMP WITH TIME ZONE USING pending_at AT TIME ZONE 'UTC',
ALTER COLUMN finished_at TYPE TIMESTAMP WITH TIME ZONE USING finished_at AT TIME ZONE 'UTC',
ALTER COLUMN reported_at TYPE TIMESTAMP WITH TIME ZONE USING reported_at AT TIME ZONE 'UTC';
""")

op.execute("ANALYZE scans;")


def downgrade() -> None:
op.alter_column(
"scans",
"reported_at",
existing_type=sa.DateTime(timezone=True),
type_=postgresql.TIMESTAMP(),
existing_nullable=True,
)
op.alter_column(
"scans",
"finished_at",
existing_type=sa.DateTime(timezone=True),
type_=postgresql.TIMESTAMP(),
existing_nullable=True,
)
op.alter_column(
"scans",
"pending_at",
existing_type=sa.DateTime(timezone=True),
type_=postgresql.TIMESTAMP(),
existing_nullable=True,
)
op.alter_column(
"scans",
"queued_at",
existing_type=sa.DateTime(timezone=True),
type_=postgresql.TIMESTAMP(),
existing_nullable=True,
)
op.execute("""\
ALTER TABLE scans
ALTER COLUMN reported_at TYPE TIMESTAMP WITHOUT TIME ZONE,
ALTER COLUMN finished_at TYPE TIMESTAMP WITHOUT TIME ZONE,
ALTER COLUMN pending_at TYPE TIMESTAMP WITHOUT TIME ZONE,
ALTER COLUMN queued_at TYPE TIMESTAMP WITHOUT TIME ZONE;
""")

op.execute("ANALYZE scans;")

0 comments on commit ca6df1d

Please sign in to comment.