"""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
    )
