8ac522441108_add_chat_and_chat_message.py 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. """add chat and chat message
  2. Revision ID: 8ac522441108
  3. Revises: e403a4152f6b
  4. Create Date: 2025-07-11 16:27:23.975758
  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 = '8ac522441108'
  11. down_revision: Union[str, None] = 'e403a4152f6b'
  12. branch_labels: Union[str, Sequence[str], None] = None
  13. depends_on: Union[str, Sequence[str], None] = None
  14. def upgrade() -> None:
  15. """Upgrade schema."""
  16. # ### commands auto generated by Alembic - please adjust! ###
  17. op.create_table('chats',
  18. sa.Column('id', sa.UUID(), nullable=False),
  19. sa.Column('title', sa.Text(), nullable=False),
  20. sa.Column('description', sa.Text(), nullable=True),
  21. sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=True),
  22. sa.Column('last_updated_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=True),
  23. sa.Column('owner_id', sa.UUID(), nullable=True),
  24. sa.Column('investigation_id', sa.UUID(), nullable=True),
  25. sa.ForeignKeyConstraint(['investigation_id'], ['investigations.id'], onupdate='CASCADE', ondelete='CASCADE'),
  26. sa.ForeignKeyConstraint(['owner_id'], ['profiles.id'], onupdate='CASCADE', ondelete='CASCADE'),
  27. sa.PrimaryKeyConstraint('id')
  28. )
  29. op.create_index('idx_chats_investigation_id', 'chats', ['investigation_id'], unique=False)
  30. op.create_index('idx_chats_owner_id', 'chats', ['owner_id'], unique=False)
  31. op.create_table('messages',
  32. sa.Column('id', sa.UUID(), nullable=False),
  33. sa.Column('content', sa.JSON(), nullable=True),
  34. sa.Column('is_bot', sa.Boolean(), nullable=False),
  35. sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=True),
  36. sa.Column('chat_id', sa.UUID(), nullable=False),
  37. sa.ForeignKeyConstraint(['chat_id'], ['chats.id'], onupdate='CASCADE', ondelete='CASCADE'),
  38. sa.PrimaryKeyConstraint('id')
  39. )
  40. op.create_index('idx_messages_chat_id', 'messages', ['chat_id'], unique=False)
  41. # ### end Alembic commands ###
  42. def downgrade() -> None:
  43. """Downgrade schema."""
  44. # ### commands auto generated by Alembic - please adjust! ###
  45. op.drop_index('idx_messages_chat_id', table_name='messages')
  46. op.drop_table('messages')
  47. op.drop_index('idx_chats_owner_id', table_name='chats')
  48. op.drop_index('idx_chats_investigation_id', table_name='chats')
  49. op.drop_table('chats')
  50. # ### end Alembic commands ###