from typing import Sequence, Union import sqlalchemy as sa from alembic import op revision: str = "006_runtime_storage" down_revision: Union[str, None] = "005_add_details_fetched_at" branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: op.execute( 'CREATE INDEX IF NOT EXISTS "ix_MOBILEDE_cars_active_last_seen_mobile_de" ' 'ON "MOBILEDE_cars" (last_seen_at) ' "WHERE is_sold = FALSE AND origin_id LIKE 'mobile.de:%'" ) op.add_column("MOBILEDE_cars", sa.Column("gallery_fetched_at", sa.DateTime(timezone=True), nullable=True)) op.create_index("ix_MOBILEDE_cars_gallery_fetched_at", "MOBILEDE_cars", ["gallery_fetched_at"]) op.execute( ''' UPDATE "MOBILEDE_cars" AS car SET gallery_fetched_at = car.details_fetched_at WHERE car.details_fetched_at IS NOT NULL AND EXISTS ( SELECT 1 FROM "MOBILEDE_images" AS image WHERE image.car_id = car.id ) ''' ) def downgrade() -> None: op.drop_index("ix_MOBILEDE_cars_gallery_fetched_at", table_name="MOBILEDE_cars") op.drop_column("MOBILEDE_cars", "gallery_fetched_at") op.execute('DROP INDEX IF EXISTS "ix_MOBILEDE_cars_active_last_seen_mobile_de"')