12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- """Update folder table and change DateTime to BigInteger for timestamp fields
- Revision ID: 4ace53fd72c8
- Revises: af906e964978
- Create Date: 2024-10-23 03:00:00.000000
- """
- from alembic import op
- import sqlalchemy as sa
- revision = "4ace53fd72c8"
- down_revision = "af906e964978"
- branch_labels = None
- depends_on = None
- def upgrade():
- # Perform safe alterations using batch operation
- with op.batch_alter_table("folder", schema=None) as batch_op:
- # Step 1: Remove server defaults for created_at and updated_at
- batch_op.alter_column(
- "created_at",
- server_default=None, # Removing server default
- )
- batch_op.alter_column(
- "updated_at",
- server_default=None, # Removing server default
- )
- # Step 2: Change the column types to BigInteger for created_at
- batch_op.alter_column(
- "created_at",
- type_=sa.BigInteger(),
- existing_type=sa.DateTime(),
- existing_nullable=False,
- postgresql_using="extract(epoch from created_at)::bigint", # Conversion for PostgreSQL
- )
- # Change the column types to BigInteger for updated_at
- batch_op.alter_column(
- "updated_at",
- type_=sa.BigInteger(),
- existing_type=sa.DateTime(),
- existing_nullable=False,
- postgresql_using="extract(epoch from updated_at)::bigint", # Conversion for PostgreSQL
- )
- def downgrade():
- # Downgrade: Convert columns back to DateTime and restore defaults
- with op.batch_alter_table("folder", schema=None) as batch_op:
- batch_op.alter_column(
- "created_at",
- type_=sa.DateTime(),
- existing_type=sa.BigInteger(),
- existing_nullable=False,
- server_default=sa.func.now(), # Restoring server default on downgrade
- )
- batch_op.alter_column(
- "updated_at",
- type_=sa.DateTime(),
- existing_type=sa.BigInteger(),
- existing_nullable=False,
- server_default=sa.func.now(), # Restoring server default on downgrade
- onupdate=sa.func.now(), # Restoring onupdate behavior if it was there
- )
|