38d63c18f30f_add_oauth_session_table.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. """Add oauth_session table
  2. Revision ID: 38d63c18f30f
  3. Revises: 3af16a1c9fb6
  4. Create Date: 2025-09-08 14:19:59.583921
  5. """
  6. from typing import Sequence, Union
  7. from alembic import op
  8. import sqlalchemy as sa
  9. # revision identifiers, used by Alembic.
  10. revision: str = "38d63c18f30f"
  11. down_revision: Union[str, None] = "3af16a1c9fb6"
  12. branch_labels: Union[str, Sequence[str], None] = None
  13. depends_on: Union[str, Sequence[str], None] = None
  14. def upgrade() -> None:
  15. # Create oauth_session table
  16. op.create_table(
  17. "oauth_session",
  18. sa.Column("id", sa.Text(), nullable=False),
  19. sa.Column("user_id", sa.Text(), nullable=False),
  20. sa.Column("provider", sa.Text(), nullable=False),
  21. sa.Column("token", sa.Text(), nullable=False),
  22. sa.Column("expires_at", sa.BigInteger(), nullable=False),
  23. sa.Column("created_at", sa.BigInteger(), nullable=False),
  24. sa.Column("updated_at", sa.BigInteger(), nullable=False),
  25. sa.PrimaryKeyConstraint("id"),
  26. sa.ForeignKeyConstraint(["user_id"], ["user.id"], ondelete="CASCADE"),
  27. )
  28. # Create indexes for better performance
  29. op.create_index("idx_oauth_session_user_id", "oauth_session", ["user_id"])
  30. op.create_index("idx_oauth_session_expires_at", "oauth_session", ["expires_at"])
  31. op.create_index(
  32. "idx_oauth_session_user_provider", "oauth_session", ["user_id", "provider"]
  33. )
  34. def downgrade() -> None:
  35. # Drop indexes first
  36. op.drop_index("idx_oauth_session_user_provider", table_name="oauth_session")
  37. op.drop_index("idx_oauth_session_expires_at", table_name="oauth_session")
  38. op.drop_index("idx_oauth_session_user_id", table_name="oauth_session")
  39. # Drop the table
  40. op.drop_table("oauth_session")