# Generated by Django 3.2.24 on 2025-10-08 14:43

from django.db import (
    migrations,
)

from edu_rdm_integration.stages.utils import (
    update_foreign_key_constraint,
)


def apply_fk_updates(apps, schema_editor):
    """
    Применяет обновления внешних ключей для конкретных моделей.

    Здесь задаются таблицы и поведение при удалении записей,
    чтобы синхронизировать фактическое состояние БД с логикой моделей.
    """
    RDMCollectingDataSubStage = apps.get_model('edu_rdm_integration_collect_data_stage', 'RDMCollectingDataSubStage')
    RDMCollectingDataStage = apps.get_model('edu_rdm_integration_collect_data_stage', 'RDMCollectingDataStage')

    # Модель: RDMCollectingDataSubStage
    # Поле previous_id должно иметь ON DELETE SET NULL
    update_foreign_key_constraint(
        table_name=RDMCollectingDataSubStage._meta.db_table,
        field_name="previous_id",
        target_table=RDMCollectingDataSubStage._meta.db_table,
        on_delete="SET NULL",
    )

    RDMCollectingDataCommandProgress = apps.get_model('edu_rdm_integration_collect_data_stage', 'RDMCollectingDataCommandProgress')
    # Модель: RDMCollectingDataCommandProgress
    # Поле stage_id должно иметь ON DELETE SET NULL
    update_foreign_key_constraint(
        table_name=RDMCollectingDataCommandProgress._meta.db_table,
        field_name="stage_id",
        target_table=RDMCollectingDataStage._meta.db_table,
        on_delete="SET NULL",
    )

    # Таблица: rdm_collecting_data_command_progress
    # Поле stage_id должно иметь ON DELETE SET NULL
    update_foreign_key_constraint(
        table_name='rdm_collecting_data_command_progress',
        field_name="stage_id",
        target_table=RDMCollectingDataStage._meta.db_table,
        on_delete="SET NULL",
    )


class Migration(migrations.Migration):

    dependencies = [
        ('edu_rdm_integration_collect_data_stage', '0005_alter_rdmcollectingdatasubstage_previous'),
    ]

    operations = [
        migrations.RunPython(apply_fk_updates, reverse_code=migrations.RunPython.noop),
    ]
