-- 170_study_session_assets.sql (7/10)
-- documents 의 스캔 교재 / 필기 PNG / 오디오 / 영상 / 자막을 study_sessions 에 연결하는 테이블.
--
-- 단일 *_document_id 컬럼 금지 — 한 세션에 여러 오디오/영상/스캔/필기 PNG 가능.
-- documents 원본은 assets 와 별도 자원 — 본 테이블 cascade 는 study_sessions / documents 둘 중
-- 어느 쪽이 사라지면 연결 행 정리 (orphan 방지).
--
-- UNIQUE (study_session_id, document_id, asset_type, role): POST /assets 의 409 근거.
-- role 이 NULL 인 경우 NULL 끼리는 Postgres 기본대로 다른 값으로 취급 (의도된 동작).

CREATE TABLE IF NOT EXISTS study_session_assets (
    id                  BIGSERIAL PRIMARY KEY,
    study_session_id    BIGINT NOT NULL REFERENCES study_sessions(id) ON DELETE CASCADE,
    document_id         BIGINT NOT NULL REFERENCES documents(id) ON DELETE CASCADE,
    asset_type          VARCHAR(30) NOT NULL,
    role                VARCHAR(40),
    sort_order          INTEGER NOT NULL DEFAULT 0,
    created_at          TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    UNIQUE (study_session_id, document_id, asset_type, role)
);
