feat: parser, refactoring

This commit is contained in:
Artem Tsyrulnikov
2025-12-07 22:17:24 +03:00
parent e90c6bfb75
commit 2af23f84fe
39 changed files with 503 additions and 822 deletions

View File

@@ -0,0 +1,43 @@
"""add_placement_parser_support
Revision ID: c8f9a2d3e4b5
Revises: b1d510ad3751
Create Date: 2025-12-07 12:00:00.000000
"""
from collections.abc import Sequence
import sqlalchemy as sa
from alembic import op
# revision identifiers, used by Alembic.
revision: str = 'c8f9a2d3e4b5'
down_revision: str | None = 'b1d510ad3751'
branch_labels: str | Sequence[str] | None = None
depends_on: str | Sequence[str] | None = None
def upgrade() -> None:
# 1. Добавить поле external_channel_message_id
op.add_column('placement', sa.Column('external_channel_message_id', sa.BigInteger(), nullable=True))
# 2. Добавить новые значения в enum placementstatus
# В PostgreSQL нельзя добавлять значения в enum внутри транзакции,
# поэтому используем autocommit_block
with op.get_context().autocommit_block():
op.execute("ALTER TYPE placementstatus ADD VALUE IF NOT EXISTS 'PENDING'")
op.execute("ALTER TYPE placementstatus ADD VALUE IF NOT EXISTS 'DELETED'")
def downgrade() -> None:
# 1. Откатить данные с новыми статусами на ACTIVE
op.execute("UPDATE placement SET status = 'ACTIVE' WHERE status IN ('PENDING', 'DELETED')")
# 2. Удалить поле external_channel_message_id
op.drop_column('placement', 'external_channel_message_id')
# ВАЖНО: В PostgreSQL нельзя удалить значения из enum.
# Новые значения 'PENDING' и 'DELETED' останутся в enum даже после downgrade.
# Это ограничение PostgreSQL. Если нужно полностью удалить значения,
# потребуется пересоздать enum, что сложнее и требует временного столбца.