-- 174_document_reads.sql
-- 자료실 회독 추적 — append-only 로그 (1/3)
-- plan: ~/.claude/plans/scalable-chasing-stonebraker.md
--
-- 단일 statement (asyncpg 제약). 인덱스는 175, 176 으로 분리.
--
-- 동작 규칙 (사용자 명시):
--   - detail 페이지 진입만으로 자동 +1 금지. 명시 클릭 시에만 row insert.
--   - 같은 날 여러 번 클릭 가능 (각 row).
--   - 회독 횟수 = COUNT(*), 마지막 시각 = MAX(read_at).
--   - documents 에 read_count 컬럼 추가하지 않음. 본 로그만으로 집계.
--
-- ownership:
--   - 현재 documents 테이블에 user_id 없음 (single-user). document_reads.user_id 만으로
--     사용자 분리. multi-user 전환 시 documents.user_id 추가 후 별도 ownership check 필요.

CREATE TABLE IF NOT EXISTS document_reads (
    id           BIGSERIAL PRIMARY KEY,
    user_id      BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
    document_id  BIGINT NOT NULL REFERENCES documents(id) ON DELETE CASCADE,
    read_at      TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
