"""document_reads 테이블 ORM — 자료실 회독 추적. NOTE: documents 테이블에 user_id 컬럼이 없음 (single-user 가정). 회독 ownership 은 document_reads.user_id 만으로 추적. multi-user 전환 시 documents.user_id 추가 후 별도 ownership check 필요. 설계: - append-only log. 회독 횟수 = COUNT(*), 마지막 시각 = MAX(read_at). - 사용자 명시 행동 (버튼 클릭) 으로만 row insert. 자동 +1 금지. - 같은 user/document 여러 row 허용 (회독 카운트 누적). """ from datetime import datetime from sqlalchemy import BigInteger, DateTime, ForeignKey from sqlalchemy.orm import Mapped, mapped_column from core.database import Base class DocumentRead(Base): __tablename__ = "document_reads" id: Mapped[int] = mapped_column(BigInteger, primary_key=True) user_id: Mapped[int] = mapped_column( BigInteger, ForeignKey("users.id", ondelete="CASCADE"), nullable=False ) document_id: Mapped[int] = mapped_column( BigInteger, ForeignKey("documents.id", ondelete="CASCADE"), nullable=False ) read_at: Mapped[datetime] = mapped_column( DateTime(timezone=True), default=datetime.now, nullable=False )