7eb70560f406_add_limits_overrides_to_users.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. """add_limits_overrides_to_users.
  2. Revision ID: 7eb70560f406
  3. Revises: c45a9cf6a8a4
  4. Create Date: 2025-01-03 20:27:16.139511
  5. """
  6. import os
  7. from typing import Sequence, Union
  8. import sqlalchemy as sa
  9. from alembic import op
  10. from sqlalchemy import inspect
  11. # revision identifiers, used by Alembic.
  12. revision: str = "7eb70560f406"
  13. down_revision: Union[str, None] = "c45a9cf6a8a4"
  14. branch_labels: Union[str, Sequence[str], None] = None
  15. depends_on: Union[str, Sequence[str], None] = None
  16. project_name = os.getenv("R2R_PROJECT_NAME", "r2r_default")
  17. def check_if_upgrade_needed():
  18. """Check if the upgrade has already been applied."""
  19. connection = op.get_bind()
  20. inspector = inspect(connection)
  21. # Check if users table exists
  22. if not inspector.has_table("users", schema=project_name):
  23. print(
  24. f"Migration not needed: '{project_name}.users' table doesn't exist"
  25. )
  26. return False
  27. users_columns = {
  28. col["name"]
  29. for col in inspector.get_columns("users", schema=project_name)
  30. }
  31. if "limits_overrides" in users_columns:
  32. print(
  33. "Migration not needed: users table already has limits_overrides column"
  34. )
  35. return False
  36. else:
  37. print("Migration needed: users table needs limits_overrides column")
  38. return True
  39. def upgrade() -> None:
  40. if not check_if_upgrade_needed():
  41. return
  42. # Add the limits_overrides column as JSONB with default NULL
  43. op.add_column(
  44. "users",
  45. sa.Column("limits_overrides", sa.JSON(), nullable=True),
  46. schema=project_name,
  47. )
  48. def downgrade() -> None:
  49. # Remove the limits_overrides column
  50. op.drop_column("users", "limits_overrides", schema=project_name)