3781e22d8b01_update_message_table.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. """Update message & channel tables
  2. Revision ID: 3781e22d8b01
  3. Revises: 7826ab40b532
  4. Create Date: 2024-12-30 03:00:00.000000
  5. """
  6. from alembic import op
  7. import sqlalchemy as sa
  8. revision = "3781e22d8b01"
  9. down_revision = "7826ab40b532"
  10. branch_labels = None
  11. depends_on = None
  12. def upgrade():
  13. # Add 'type' column to the 'channel' table
  14. op.add_column(
  15. "channel",
  16. sa.Column(
  17. "type",
  18. sa.Text(),
  19. nullable=True,
  20. ),
  21. )
  22. # Add 'parent_id' column to the 'message' table for threads
  23. op.add_column(
  24. "message",
  25. sa.Column("parent_id", sa.Text(), nullable=True),
  26. )
  27. op.create_table(
  28. "message_reaction",
  29. sa.Column(
  30. "id", sa.Text(), nullable=False, primary_key=True, unique=True
  31. ), # Unique reaction ID
  32. sa.Column("user_id", sa.Text(), nullable=False), # User who reacted
  33. sa.Column(
  34. "message_id", sa.Text(), nullable=False
  35. ), # Message that was reacted to
  36. sa.Column(
  37. "name", sa.Text(), nullable=False
  38. ), # Reaction name (e.g. "thumbs_up")
  39. sa.Column(
  40. "created_at", sa.BigInteger(), nullable=True
  41. ), # Timestamp of when the reaction was added
  42. )
  43. op.create_table(
  44. "channel_member",
  45. sa.Column(
  46. "id", sa.Text(), nullable=False, primary_key=True, unique=True
  47. ), # Record ID for the membership row
  48. sa.Column("channel_id", sa.Text(), nullable=False), # Associated channel
  49. sa.Column("user_id", sa.Text(), nullable=False), # Associated user
  50. sa.Column(
  51. "created_at", sa.BigInteger(), nullable=True
  52. ), # Timestamp of when the user joined the channel
  53. )
  54. def downgrade():
  55. # Revert 'type' column addition to the 'channel' table
  56. op.drop_column("channel", "type")
  57. op.drop_column("message", "parent_id")
  58. op.drop_table("message_reaction")
  59. op.drop_table("channel_member")