from django.db import models

class EsExamPeriodUnavailability(models.Model):
    exam_period = models.ForeignKey("api.EsExamPeriod", on_delete=models.SET_NULL,null=True)
    unavailable_date = models.DateField()
    created_by = models.BigIntegerField(null=True)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_by = models.BigIntegerField(null=True)
    updated_at = models.DateTimeField(auto_now=True)

    class Meta:
        db_table = "es_exam_period_unavailability"

    @staticmethod
    def bulk_insert(exam_period_id, insert_list: list[str]):
        existing = set(
            EsExamPeriodUnavailability.objects.filter(exam_period_id=exam_period_id)
            .values_list("unavailable_date", flat=True)
        )

        # remove exists
        new_list = [val for val in insert_list if val not in existing]

        objs = [
            EsExamPeriodUnavailability(exam_period_id=exam_period_id, unavailable_date=item)
            for item in new_list
        ]
        return EsExamPeriodUnavailability.objects.bulk_create(objs)