from datetime import datetime, timezone from sqlalchemy import DateTime, ForeignKey, Integer from sqlalchemy.dialects.postgresql import JSONB from sqlalchemy.orm import Mapped, mapped_column from fabledassistant.models import Base class NoteEmbedding(Base): """Stores the embedding vector for a note, used for semantic search.""" __tablename__ = "note_embeddings" note_id: Mapped[int] = mapped_column( Integer, ForeignKey("notes.id", ondelete="CASCADE"), primary_key=True, ) user_id: Mapped[int] = mapped_column(Integer, nullable=False, index=True) embedding: Mapped[list] = mapped_column(JSONB, nullable=False) updated_at: Mapped[datetime] = mapped_column( DateTime(timezone=True), default=lambda: datetime.now(timezone.utc), )