# Migration to rename Scheme models to OpportunityBundle

from django.db import migrations, models


class Migration(migrations.Migration):

    dependencies = [
        ('schemes', '0008_scheme_scheme_amount'),
    ]

    operations = [
        # --- Rename models ---
        migrations.RenameModel(old_name='Scheme', new_name='OpportunityBundle'),
        migrations.RenameModel(old_name='SchemeDistribution', new_name='OpportunityBundleDistribution'),
        migrations.RenameModel(old_name='SchemeLevel', new_name='OpportunityBundleLevel'),

        # --- Rename FK in distribution (no indexes referencing this field) ---
        migrations.RenameField(
            model_name='opportunitybundledistribution',
            old_name='scheme',
            new_name='opportunity_bundle',
        ),

        # --- Remove indexes that reference the 'scheme' field on OpportunityBundleLevel
        #     BEFORE renaming that field, otherwise SQLite table remake fails ---
        migrations.RemoveIndex(
            model_name='opportunitybundlelevel',
            name='schemes_sch_scheme__8a2de0_idx',
        ),
        migrations.RemoveIndex(
            model_name='opportunitybundlelevel',
            name='schemes_sch_scheme__501bd5_idx',
        ),

        # --- Clear unique_together before renaming the field ---
        migrations.AlterUniqueTogether(
            name='opportunitybundlelevel',
            unique_together=set(),
        ),

        # --- Now safe to rename: table remake won't reference 'scheme' indexes ---
        migrations.RenameField(
            model_name='opportunitybundlelevel',
            old_name='scheme',
            new_name='opportunity_bundle',
        ),

        # --- Restore unique_together with the new field name ---
        migrations.AlterUniqueTogether(
            name='opportunitybundlelevel',
            unique_together={('opportunity_bundle', 'level_number')},
        ),

        # --- Add back indexes using the new field name ---
        migrations.AddIndex(
            model_name='opportunitybundlelevel',
            index=models.Index(fields=['opportunity_bundle'], name='schemes_opp_opportu_377b9f_idx'),
        ),
        migrations.AddIndex(
            model_name='opportunitybundlelevel',
            index=models.Index(fields=['opportunity_bundle', 'level_number'], name='schemes_opp_opportu_f116ba_idx'),
        ),
    ]
