-- V107: user_device_token — 푸시 알림용 디바이스(FCM) 토큰 등록
--       사용자(설계사 PWA 등)가 발급받은 FCM 토큰을 저장. 알림 발생 시 활성 토큰으로 푸시 발송.

CREATE TABLE user_device_token (
    token_id    BIGSERIAL    PRIMARY KEY,
    user_id     BIGINT       NOT NULL REFERENCES users(user_id),
    token       VARCHAR(512) NOT NULL,
    platform    VARCHAR(20)  NOT NULL DEFAULT 'WEB',   -- WEB / ANDROID / IOS
    is_active   CHAR(1)      NOT NULL DEFAULT 'Y',
    created_at  TIMESTAMP    NOT NULL DEFAULT NOW(),
    updated_at  TIMESTAMP,
    UNIQUE (token),
    CHECK (platform IN ('WEB','ANDROID','IOS')),
    CHECK (is_active IN ('Y','N'))
);

COMMENT ON TABLE  user_device_token            IS '푸시 알림용 디바이스 토큰 — 사용자별 FCM 등록 토큰';
COMMENT ON COLUMN user_device_token.user_id    IS '소유 사용자 FK';
COMMENT ON COLUMN user_device_token.token      IS 'FCM 등록 토큰(또는 웹푸시 endpoint)';
COMMENT ON COLUMN user_device_token.platform   IS '플랫폼 (WEB/ANDROID/IOS)';
COMMENT ON COLUMN user_device_token.is_active  IS '활성 여부 — 만료/로그아웃 시 N';

CREATE INDEX idx_udt_user ON user_device_token(user_id, is_active);
