def downgrade()

in annotation/alembic/versions/2b3ed53127ea_alter_categories_id_integer_to_varchar.py [0:0]


def downgrade():
    clear_tables()
    if not check_exist_sequence():
        op.execute(sa.schema.CreateSequence(categories_id_seq))
    op.drop_constraint(
        "categories_parent_fkey", "categories", type_="foreignkey"
    )
    op.drop_constraint(
        "association_jobs_categories_category_id_fkey",
        "association_jobs_categories",
        type_="foreignkey",
    )
    op.add_column(
        "categories",
        sa.Column(
            "parent_temp",
            sa.INTEGER(),
            nullable=True,
        ),
    )
    op.add_column(
        "categories",
        sa.Column(
            "id_temp",
            sa.INTEGER(),
            categories_id_seq,
            nullable=True,
            primary_key=True,
            server_default=categories_id_seq.next_value(),
        ),
    ),
    op.add_column(
        "association_jobs_categories",
        sa.Column(
            "category_id_temp",
            sa.INTEGER(),
            nullable=True,
        ),
    )
    op.drop_column("categories", "parent")
    op.drop_column("categories", "id")
    op.drop_column("association_jobs_categories", "category_id")
    op.create_primary_key("pk_categories", "categories", ["id_temp"])
    op.create_foreign_key(
        "categories_parent_fkey",
        "categories",
        "categories",
        ["parent_temp"],
        ["id_temp"],
        ondelete="CASCADE",
    )
    op.create_foreign_key(
        "association_jobs_categories_category_id_fkey",
        "association_jobs_categories",
        "categories",
        ["category_id_temp"],
        ["id_temp"],
    )
    op.alter_column(
        "categories",
        "parent_temp",
        new_column_name="parent",
    )
    op.alter_column(
        "categories", "id_temp", new_column_name="id", nullable=False
    )
    op.alter_column(
        "association_jobs_categories",
        "category_id_temp",
        new_column_name="category_id",
        nullable=False,
    )
    op.create_check_constraint(
        "is_not_self_parent", "categories", "id != parent"
    )
    op.create_index(
        op.f("ix_categories_parent"),
        "categories",
        ["parent"],
        unique=False,
    )