import django.db.models.deletion
from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = []

    operations = [
        migrations.CreateModel(
            name="County",
            fields=[
                ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
                ("name", models.CharField(db_index=True, max_length=120, unique=True)),
                ("created_at", models.DateTimeField(auto_now_add=True)),
                ("updated_at", models.DateTimeField(auto_now=True)),
            ],
            options={
                "verbose_name_plural": "counties",
                "ordering": ["name", "id"],
            },
        ),
        migrations.CreateModel(
            name="SubCounty",
            fields=[
                ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
                ("name", models.CharField(db_index=True, max_length=120)),
                ("created_at", models.DateTimeField(auto_now_add=True)),
                ("updated_at", models.DateTimeField(auto_now=True)),
                ("county", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name="sub_counties", to="locations.county")),
            ],
            options={
                "ordering": ["county__name", "name", "id"],
            },
        ),
        migrations.CreateModel(
            name="Division",
            fields=[
                ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
                ("name", models.CharField(db_index=True, max_length=120)),
                ("created_at", models.DateTimeField(auto_now_add=True)),
                ("updated_at", models.DateTimeField(auto_now=True)),
                ("sub_county", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name="divisions", to="locations.subcounty")),
            ],
            options={
                "ordering": ["sub_county__county__name", "sub_county__name", "name", "id"],
            },
        ),
        migrations.CreateModel(
            name="Location",
            fields=[
                ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
                ("name", models.CharField(db_index=True, max_length=120)),
                ("created_at", models.DateTimeField(auto_now_add=True)),
                ("updated_at", models.DateTimeField(auto_now=True)),
                ("division", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name="locations", to="locations.division")),
            ],
            options={
                "ordering": [
                    "division__sub_county__county__name",
                    "division__sub_county__name",
                    "division__name",
                    "name",
                    "id",
                ],
            },
        ),
        migrations.CreateModel(
            name="SubLocation",
            fields=[
                ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
                ("name", models.CharField(db_index=True, max_length=120)),
                ("created_at", models.DateTimeField(auto_now_add=True)),
                ("updated_at", models.DateTimeField(auto_now=True)),
                ("location", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name="sub_locations", to="locations.location")),
            ],
            options={
                "ordering": [
                    "location__division__sub_county__county__name",
                    "location__division__sub_county__name",
                    "location__division__name",
                    "location__name",
                    "name",
                    "id",
                ],
            },
        ),
        migrations.AddConstraint(
            model_name="subcounty",
            constraint=models.UniqueConstraint(fields=("county", "name"), name="unique_sub_county_per_county"),
        ),
        migrations.AddConstraint(
            model_name="division",
            constraint=models.UniqueConstraint(fields=("sub_county", "name"), name="unique_division_per_sub_county"),
        ),
        migrations.AddConstraint(
            model_name="location",
            constraint=models.UniqueConstraint(fields=("division", "name"), name="unique_location_per_division"),
        ),
        migrations.AddConstraint(
            model_name="sublocation",
            constraint=models.UniqueConstraint(fields=("location", "name"), name="unique_sub_location_per_location"),
        ),
        migrations.AddIndex(
            model_name="subcounty",
            index=models.Index(fields=["county", "name"], name="locations_su_county__f3ebfa_idx"),
        ),
        migrations.AddIndex(
            model_name="division",
            index=models.Index(fields=["sub_county", "name"], name="locations_di_sub_cou_87ae7d_idx"),
        ),
        migrations.AddIndex(
            model_name="location",
            index=models.Index(fields=["division", "name"], name="locations_lo_divisio_7331b8_idx"),
        ),
        migrations.AddIndex(
            model_name="sublocation",
            index=models.Index(fields=["location", "name"], name="locations_su_locatio_74f5ef_idx"),
        ),
    ]
