# Generated by Django 3.2.6 on 2021-10-12 08:18

from django.db import migrations, models


# noinspection PyPep8Naming,PyUnusedLocal
def forward(apps, schema_editor):
    TrashEntry = apps.get_model("core", "TrashEntry")
    # Reverse to keep the first duplicate row
    for row in TrashEntry.objects.all().order_by("id").reverse():
        num_duplicate_rows = TrashEntry.objects.filter(
            parent_trash_item_id=row.parent_trash_item_id,
            trash_item_id=row.trash_item_id,
            trash_item_type=row.trash_item_type,
        ).count()
        if num_duplicate_rows > 1:
            row.delete()


# noinspection PyPep8Naming,PyUnusedLocal
def reverse(apps, schema_editor):
    pass


class Migration(migrations.Migration):
    dependencies = [
        ("core", "0009_user_profile"),
    ]

    operations = [
        migrations.RunPython(forward, reverse),
        migrations.AlterUniqueTogether(
            name="trashentry",
            unique_together=set(),
        ),
        migrations.AddConstraint(
            model_name="trashentry",
            constraint=models.UniqueConstraint(
                fields=("trash_item_type", "parent_trash_item_id", "trash_item_id"),
                name="unique_with_parent_trash_item_id",
            ),
        ),
        migrations.AddConstraint(
            model_name="trashentry",
            constraint=models.UniqueConstraint(
                condition=models.Q(("parent_trash_item_id", None)),
                fields=("trash_item_type", "trash_item_id"),
                name="unique_without_parent_trash_item_id",
            ),
        ),
    ]
