"""Project Knowledge Graph evidence model.""" from __future__ import annotations from typing import Any, Optional from sqlalchemy import ForeignKey, Integer, TEXT, TIMESTAMP, VARCHAR, func from sqlalchemy.orm import Mapped, mapped_column from .base import Base from .types import JSONB class KGEvidence(Base): __tablename__ = "kg_evidences" id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True) entity_id: Mapped[Optional[int]] = mapped_column( Integer, ForeignKey("kg_entities.id", ondelete="CASCADE"), nullable=True, index=True, ) relation_id: Mapped[Optional[int]] = mapped_column( Integer, ForeignKey("kg_relations.id", ondelete="CASCADE"), nullable=True, index=True, ) evidence_type: Mapped[str] = mapped_column(VARCHAR(40), nullable=False, index=True) content_hash: Mapped[str] = mapped_column(VARCHAR(64), nullable=False, index=True) content_excerpt: Mapped[str] = mapped_column(TEXT, nullable=False) source_type: Mapped[str] = mapped_column(VARCHAR(32), nullable=False, default="system", index=True) source_ref: Mapped[Optional[str]] = mapped_column(VARCHAR(255), nullable=True) meta_payload: Mapped[Optional[Any]] = mapped_column("metadata", JSONB, nullable=True) occurred_at: Mapped[Optional[TIMESTAMP]] = mapped_column( TIMESTAMP, nullable=False, server_default=func.now(), index=True, )