in annotation/alembic/versions/2b3ed53127ea_alter_categories_id_integer_to_varchar.py [0:0]
def upgrade():
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.VARCHAR(),
nullable=True,
),
)
op.add_column(
"categories",
sa.Column(
"id_temp",
sa.VARCHAR(),
sa.Sequence("categories_id_seq"),
nullable=True,
primary_key=True,
),
)
op.add_column(
"association_jobs_categories",
sa.Column(
"category_id_temp",
sa.VARCHAR(),
nullable=True,
),
)
op.execute("UPDATE categories SET parent_temp = CAST(parent AS varchar)")
op.execute("UPDATE categories SET id_temp = CAST(id AS varchar)")
op.execute(
"UPDATE association_jobs_categories "
"SET category_id_temp = CAST(category_id AS varchar)"
)
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",
server_default="null",
)
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,
)