# Generated by Django 4.2.9 on 2026-02-28

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


class Migration(migrations.Migration):

    dependencies = [
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
        ("app", "0084_merge_20260228_0002"),
    ]

    operations = [
        migrations.CreateModel(
            name="StudentPromotionHistory",
            fields=[
                ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
                ("active_students_only", models.BooleanField(default=True)),
                ("total_candidates", models.PositiveIntegerField(default=0)),
                ("promoted_count", models.PositiveIntegerField(default=0)),
                ("already_registered_count", models.PositiveIntegerField(default=0)),
                ("skipped_inactive_count", models.PositiveIntegerField(default=0)),
                ("skipped_duplicate_source_count", models.PositiveIntegerField(default=0)),
                ("updated_student_snapshots", models.PositiveIntegerField(default=0)),
                ("missing_stream_names", models.JSONField(blank=True, default=list)),
                ("promoted_at", models.DateTimeField(auto_now_add=True)),
                (
                    "promoted_by",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.SET_NULL,
                        related_name="student_promotion_history_rows",
                        to=settings.AUTH_USER_MODEL,
                    ),
                ),
                (
                    "source_academic_class",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.PROTECT,
                        related_name="promotion_history_as_source",
                        to="app.academicclass",
                    ),
                ),
                (
                    "source_stream",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.SET_NULL,
                        related_name="promotion_history_rows",
                        to="app.academicclassstream",
                    ),
                ),
                (
                    "target_academic_class",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.PROTECT,
                        related_name="promotion_history_as_target",
                        to="app.academicclass",
                    ),
                ),
            ],
            options={
                "verbose_name": "Student promotion history",
                "verbose_name_plural": "Student promotion history",
                "ordering": ("-promoted_at", "-id"),
            },
        ),
        migrations.AddIndex(
            model_name="studentpromotionhistory",
            index=models.Index(fields=["promoted_at"], name="sph_promoted_at_idx"),
        ),
        migrations.AddIndex(
            model_name="studentpromotionhistory",
            index=models.Index(
                fields=["source_academic_class", "promoted_at"],
                name="sph_src_promoted_idx",
            ),
        ),
        migrations.AddIndex(
            model_name="studentpromotionhistory",
            index=models.Index(
                fields=["target_academic_class", "promoted_at"],
                name="sph_tgt_promoted_idx",
            ),
        ),
        migrations.AddIndex(
            model_name="studentpromotionhistory",
            index=models.Index(fields=["promoted_by", "promoted_at"], name="sph_user_promoted_idx"),
        ),
    ]
