40d6c8e4be94_add_parent_asset_id_column.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. """Add parent_asset_id column.
  2. Revision ID: 40d6c8e4be94
  3. Revises: 2ac7fb39ce0c
  4. Create Date: 2023-09-19 17:05:00.020779
  5. """
  6. from alembic import op
  7. import sqlalchemy as sa
  8. # revision identifiers, used by Alembic.
  9. revision = "40d6c8e4be94"
  10. down_revision = "2ac7fb39ce0c"
  11. branch_labels = None
  12. depends_on = None
  13. def upgrade():
  14. op.add_column(
  15. "generic_asset",
  16. sa.Column(
  17. "parent_asset_id",
  18. sa.INTEGER,
  19. sa.ForeignKey("generic_asset.id"),
  20. nullable=True,
  21. ),
  22. )
  23. op.create_check_constraint(
  24. "self_reference", "generic_asset", "parent_asset_id != id"
  25. )
  26. def downgrade():
  27. connection = op.get_bind()
  28. number_assets_with_parent = connection.execute(
  29. "SELECT COUNT(*) from generic_asset WHERE parent_asset_id is not null;"
  30. ).fetchone()[0]
  31. print(
  32. f"Dropping column `parent_asset_id` from the table `generic_asset`. Currently, the database contains {number_assets_with_parent} asset/s that have a parent asset defined, beware that this information will be gone."
  33. )
  34. op.drop_constraint("self_reference", "generic_asset", type_="check")
  35. op.drop_column("generic_asset", "parent_asset_id")