from django.db import models
from apps.car_stock.models import CarStock


class CarImage(models.Model):
    """
    Stores images for a car.
    One CarStock -> many images.
    """

    car = models.ForeignKey(
        CarStock,
        related_name="images",
        on_delete=models.CASCADE
    )

    image = models.ImageField(
        upload_to="cars_tock/images/",
        help_text="Vehicle image"
    )

    is_primary = models.BooleanField(
        default=False,
        help_text="Main image for listings"
    )

    order = models.PositiveIntegerField(
        default=0,
        help_text="Display order in UI"
    )

    created_at = models.DateTimeField(auto_now_add=True)

    class Meta:
        db_table = "car_stock_image"
        ordering = ["order", "id"]
        verbose_name_plural = "Car Images"
        indexes = [
            models.Index(fields=["car"]),
            models.Index(fields=["is_primary"]),
        ]
        constraints = [
            models.UniqueConstraint(
                fields=["car"],
                condition=models.Q(is_primary=True),
                name="unique_primary_image_per_car"
            )
        ]

    def __str__(self):
        return f"Image for {self.car.stock_number}"
