|
@@ -0,0 +1,67 @@
|
|
|
|
+"""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
|
|
|
|
+ )
|