"""filename

Revision ID: e2cba6aea6b2
Revises: 301e6ae52d16
Create Date: 2025-05-07 15:06:11.140736

"""
from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision = 'e2cba6aea6b2'
down_revision = '301e6ae52d16'
branch_labels = None
depends_on = None


def upgrade():
    # Шаг 1: временно nullable
    op.add_column('cmf_attachment', sa.Column('file_name', sa.String(length=256), nullable=True))
    
    # Шаг 2: копируем name → file_name
    op.execute("""
        UPDATE cmf_attachment
        SET name = ''
        WHERE name is null
    """)
    op.execute("""
        UPDATE cmf_attachment
        SET file_name = name
    """)
    
    # Шаг 3: делаем NOT NULL после заполнения
    op.alter_column('cmf_attachment', 'file_name',
                    existing_type=sa.String(length=256),
                    nullable=False)

    # Шаг 4: меняем тип name
    op.alter_column('cmf_attachment', 'name',
                    existing_type=sa.VARCHAR(length=256),
                    type_=sa.String(length=4096),
                    nullable=False)

    # Шаг 5: создаём индекс
    op.create_index(op.f('ix_cmf_attachment_file_name'), 'cmf_attachment', ['file_name'], unique=False)


def downgrade():
    # ### commands auto generated by Alembic - please adjust! ###
    op.drop_index(op.f('ix_cmf_attachment_file_name'), table_name='cmf_attachment')
    op.alter_column('cmf_attachment', 'name',
               existing_type=sa.String(length=4096),
               type_=sa.VARCHAR(length=256),
               nullable=True)
    op.drop_column('cmf_attachment', 'file_name')
    # ### end Alembic commands ###
