"""
Face record model with pgvector embedding field for ArcFace 512-dim vectors.
"""

from django.db import models
from pgvector.django import VectorField


class FaceRecord(models.Model):
    """Stores a registered face with its ArcFace embedding for similarity search."""

    name = models.CharField(max_length=255)
    photo = models.ImageField(upload_to="faces/")
    embedding = VectorField(dimensions=512)  # ArcFace 512-dimensional embedding
    created_at = models.DateTimeField(auto_now_add=True)
    metadata = models.JSONField(default=dict, blank=True)

    class Meta:
        db_table = "faces_facerecord"
        ordering = ["-created_at"]
        indexes = []
        # IVFFlat index for fast cosine ANN search is created via RunSQL in migration

    def __str__(self):
        return f"{self.name} ({self.id})"
