import uuid
from django.db import migrations, models


def gen_public_ids(apps, schema_editor):
    """Backfill a unique UUID for every existing JD before the unique constraint."""
    JD = apps.get_model("jobs", "JobDescription")
    for row in JD.objects.all().only("id"):
        row.public_id = uuid.uuid4()
        row.save(update_fields=["public_id"])


class Migration(migrations.Migration):

    dependencies = [
        ("jobs", "0019_alter_jobdescription_status"),
    ]

    operations = [
        # 1) add nullable, NOT unique yet
        migrations.AddField(
            model_name="jobdescription",
            name="public_id",
            field=models.UUIDField(db_index=True, default=uuid.uuid4, editable=False, null=True),
        ),
        # 2) give every existing row its own UUID
        migrations.RunPython(gen_public_ids, migrations.RunPython.noop),
        # 3) now enforce uniqueness
        migrations.AlterField(
            model_name="jobdescription",
            name="public_id",
            field=models.UUIDField(db_index=True, default=uuid.uuid4, editable=False, null=True, unique=True),
        ),
    ]
