-- 177_document_notes.sql
-- 자료별 손글씨 노트 — 자료 학습 시 옆에 띄워놓고 필기.
-- plan: ~/.claude/plans/scalable-chasing-stonebraker.md (PR-D)
--
-- 모델: 사용자×자료 1:1. UNIQUE (user_id, document_id) 로 강제.
-- strokes_json 은 perfect-freehand input points + style.
-- canvas_width/height 는 마지막 저장 시점의 캔버스 표시 크기 (참고용, 렌더는 자체 비율 유지).
--
-- 회독 (document_reads) 와 별개 — append-only log 가 아닌 upsert 방식.

CREATE TABLE IF NOT EXISTS document_notes (
    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,
    strokes_json    JSONB,
    canvas_width    INTEGER,
    canvas_height   INTEGER,
    schema_version  INTEGER NOT NULL DEFAULT 1,
    created_at      TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    updated_at      TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    UNIQUE (user_id, document_id)
);
