feat: parser, refactoring
This commit is contained in:
@@ -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, что сложнее и требует временного столбца.
|
||||
Reference in New Issue
Block a user