from django.db import models
from customermanagement.models import Customer


class CustomerBuyer(models.Model):
    customer = models.ForeignKey(
        Customer,
        on_delete=models.CASCADE,
        related_name="buyers",
        help_text="Buyer belongs to this customer."
    )
    name = models.CharField(max_length=100)
    description = models.TextField(blank=True, null=True)

    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    class Meta:
        constraints = [
            models.UniqueConstraint(
                fields=["customer", "name"],
                name="uniq_buyer_name_per_customer",
            ),
        ]
        indexes = [models.Index(fields=["customer"])]
        ordering = ["-created_at"]

    def __str__(self) -> str:
        return self.name

    def save(self, *args, **kwargs):
        if self.name:
            self.name = self.name.strip()
        self.full_clean()
        return super().save(*args, **kwargs)
