from django.db import models

from misago.conf import settings


class ThreadParticipantManager(models.Manager):
    def set_owner(self, thread, user):
        ThreadParticipant.objects.filter(thread=thread, is_owner=True).update(is_owner=False)

        self.remove_participant(thread, user)

        ThreadParticipant.objects.create(thread=thread, user=user, is_owner=True)

    def add_participants(self, thread, users):
        bulk = []
        for user in users:
            bulk.append(ThreadParticipant(thread=thread, user=user, is_owner=False))

        ThreadParticipant.objects.bulk_create(bulk)

    def remove_participant(self, thread, user):
        ThreadParticipant.objects.filter(thread=thread, user=user).delete()


class ThreadParticipant(models.Model):
    thread = models.ForeignKey(
        'misago_threads.Thread',
        on_delete=models.CASCADE,
    )
    user = models.ForeignKey(
        settings.AUTH_USER_MODEL,
        on_delete=models.CASCADE,
    )
    is_owner = models.BooleanField(default=False)

    objects = ThreadParticipantManager()
