-- Telegram Bot Rolling Summary Schema -- D1 Database for Cloudflare Workers -- 사용자 테이블 CREATE TABLE IF NOT EXISTS users ( id INTEGER PRIMARY KEY AUTOINCREMENT, telegram_id TEXT UNIQUE NOT NULL, username TEXT, first_name TEXT, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ); -- 메시지 버퍼 (요약 전 임시 저장) CREATE TABLE IF NOT EXISTS message_buffer ( id INTEGER PRIMARY KEY AUTOINCREMENT, user_id INTEGER NOT NULL, chat_id TEXT NOT NULL, role TEXT NOT NULL CHECK(role IN ('user', 'bot')), message TEXT NOT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES users(id) ); -- 요약 저장 테이블 (슬라이딩 윈도우: 최대 3개만 유지) CREATE TABLE IF NOT EXISTS summaries ( id INTEGER PRIMARY KEY AUTOINCREMENT, user_id INTEGER NOT NULL, chat_id TEXT NOT NULL, generation INTEGER NOT NULL DEFAULT 1, summary TEXT NOT NULL, message_count INTEGER NOT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES users(id) ); -- 인덱스 CREATE INDEX IF NOT EXISTS idx_buffer_user ON message_buffer(user_id); CREATE INDEX IF NOT EXISTS idx_buffer_chat ON message_buffer(user_id, chat_id); CREATE INDEX IF NOT EXISTS idx_summary_user ON summaries(user_id, chat_id); CREATE INDEX IF NOT EXISTS idx_summary_latest ON summaries(user_id, chat_id, generation DESC); CREATE INDEX IF NOT EXISTS idx_users_telegram ON users(telegram_id);