"""Add platforms column to dockerfiles table Revision ID: 006 Revises: 005 Create Date: 2024-01-04 12:00:00.000000 """ from alembic import op import sqlalchemy as sa from sqlalchemy.dialects import postgresql import json # revision identifiers, used by Alembic. revision = '006' down_revision = '005' branch_labels = None depends_on = None def upgrade() -> None: """Добавление поля platforms в таблицу dockerfiles""" connection = op.get_bind() # Добавляем колонку platforms (JSON) с дефолтным значением op.add_column( 'dockerfiles', sa.Column('platforms', postgresql.JSON(astext_type=sa.Text()), nullable=True) ) # Устанавливаем дефолтные значения для существующих записей # По умолчанию: linux/amd64 (x86_64), linux/386 (x86) и linux/arm64 (macOS M1) default_platforms = ["linux/amd64", "linux/386", "linux/arm64"] # Используем CAST для преобразования строки JSON в JSONB connection.execute( sa.text(""" UPDATE dockerfiles SET platforms = CAST(:platforms AS jsonb) WHERE platforms IS NULL """), {"platforms": json.dumps(default_platforms)} ) def downgrade() -> None: """Удаление поля platforms из таблицы dockerfiles""" op.drop_column('dockerfiles', 'platforms')