from typing import Any

from sqlalchemy import ForeignKey, Integer, JSON, String
from sqlalchemy.orm import Mapped, mapped_column, relationship

from app.core.database import Base


class LabelEmbedding(Base):
    """Embedding visual de una etiqueta asociado a un producto."""

    __tablename__ = "label_embeddings"

    id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True)
    id_product: Mapped[str] = mapped_column(
        String(64),
        ForeignKey("products.id"),
        nullable=False,
        index=True,
    )
    # Vector CLIP (u otro) como lista de floats, ej. 512 dims.
    embedding: Mapped[list[Any]] = mapped_column(JSON, nullable=False)

    product = relationship("Product", back_populates="label_embeddings")
