from django.db import migrations, models


def backfill_structured_locations(apps, schema_editor):
    Job = apps.get_model('jobs', 'Job')
    from home.geo.service import parse_location

    for job in Job.objects.all().iterator():
        if job.location_regions:
            continue
        parsed = parse_location(job.location or '')
        regions = [parsed['region']] if parsed.get('region') else []
        job.location_country = parsed.get('country') or 'ZM'
        job.location_regions = regions
        job.location_city = parsed.get('city') or ''
        job.save(update_fields=['location_country', 'location_regions', 'location_city'])


class Migration(migrations.Migration):

    dependencies = [
        ('jobs', '0014_jobcategory_number'),
    ]

    operations = [
        migrations.AddField(
            model_name='job',
            name='location_city',
            field=models.CharField(
                blank=True,
                help_text='Primary city or town (optional for multi-region roles).',
                max_length=120,
            ),
        ),
        migrations.AddField(
            model_name='job',
            name='location_country',
            field=models.CharField(blank=True, default='ZM', max_length=2),
        ),
        migrations.AddField(
            model_name='job',
            name='location_regions',
            field=models.JSONField(blank=True, default=list),
        ),
        migrations.RunPython(backfill_structured_locations, migrations.RunPython.noop),
    ]
