"""add p2p messages table Revision ID: 008 Revises: 007 Create Date: 2025-11-17 """ from alembic import op import sqlalchemy as sa from sqlalchemy.dialects import postgresql # revision identifiers revision = '008' down_revision = '007' branch_labels = None depends_on = None def upgrade() -> None: # Создаём таблицу P2P сообщений op.create_table( 'p2p_messages', sa.Column('id', sa.Integer(), nullable=False), sa.Column('sender_id', sa.Integer(), nullable=False), sa.Column('recipient_id', sa.Integer(), nullable=False), sa.Column('message_type', sa.String(length=20), nullable=False), sa.Column('text', sa.Text(), nullable=True), sa.Column('file_id', sa.String(length=255), nullable=True), sa.Column('sender_message_id', sa.Integer(), nullable=False), sa.Column('recipient_message_id', sa.Integer(), nullable=True), sa.Column('is_read', sa.Boolean(), nullable=False, server_default='false'), sa.Column('read_at', sa.DateTime(timezone=True), nullable=True), sa.Column('reply_to_id', sa.Integer(), nullable=True), sa.Column('created_at', sa.DateTime(timezone=True), nullable=False), sa.ForeignKeyConstraint(['sender_id'], ['users.id'], ), sa.ForeignKeyConstraint(['recipient_id'], ['users.id'], ), sa.ForeignKeyConstraint(['reply_to_id'], ['p2p_messages.id'], ), sa.PrimaryKeyConstraint('id') ) # Создаём индексы для быстрого поиска op.create_index('ix_p2p_messages_sender_id', 'p2p_messages', ['sender_id']) op.create_index('ix_p2p_messages_recipient_id', 'p2p_messages', ['recipient_id']) op.create_index('ix_p2p_messages_is_read', 'p2p_messages', ['is_read']) op.create_index('ix_p2p_messages_created_at', 'p2p_messages', ['created_at']) def downgrade() -> None: op.drop_index('ix_p2p_messages_created_at', 'p2p_messages') op.drop_index('ix_p2p_messages_is_read', 'p2p_messages') op.drop_index('ix_p2p_messages_recipient_id', 'p2p_messages') op.drop_index('ix_p2p_messages_sender_id', 'p2p_messages') op.drop_table('p2p_messages')