-- 외래키 제약 조건 활성화
-- 기본적으로 SQLite는 외래키 검사 안함 그래서 켜줘야 함
PRAGMA foreign_keys = ON;

CREATE TABLE IF NOT EXISTS guilds (
  id          TEXT PRIMARY KEY,   -- 길드 ID (전역 유일값)
  name        TEXT NOT NULL,      -- 길드 이름 (캐싱용)
  channel_id  TEXT NOT NULL       -- 채팅 ID
);

CREATE TABLE IF NOT EXISTS users (
  guild_id    TEXT NOT NULL,         -- 소속 길드 ID, guilds.id를 참조
  id          TEXT NOT NULL,         -- 유저 ID
  name        TEXT NOT NULL,         -- 유저 이름 (캐싱용)
  voice_type  TEXT,                  -- TTS 목소리 슬러그 (NULL = 기본)

  -- 복합 기본키: 같은 길드 안에서 id는 중복 불가
  PRIMARY KEY (guild_id, id),

  -- 외래키 설정: guilds.id를 참조
  -- 길드가 삭제되면 소속된 유저도 자동으로 삭제됨 (ON DELETE CASCADE)
  FOREIGN KEY (guild_id) REFERENCES guilds(id) ON DELETE CASCADE
);