schema.sql 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. -- 用户表:记录每个独立设备(下载用户统计)
  2. CREATE TABLE IF NOT EXISTS users (
  3. uuid TEXT PRIMARY KEY,
  4. ip_hash TEXT NOT NULL,
  5. first_seen TEXT NOT NULL DEFAULT (datetime('now')),
  6. last_seen TEXT NOT NULL DEFAULT (datetime('now'))
  7. );
  8. -- 会话表:记录 open/close 事件(在线人数统计)
  9. CREATE TABLE IF NOT EXISTS sessions (
  10. id INTEGER PRIMARY KEY AUTOINCREMENT,
  11. uuid TEXT NOT NULL,
  12. open_time TEXT NOT NULL DEFAULT (datetime('now')),
  13. close_time TEXT,
  14. last_active TEXT NOT NULL DEFAULT (datetime('now')),
  15. is_online INTEGER NOT NULL DEFAULT 1
  16. );
  17. -- 每日统计快照
  18. CREATE TABLE IF NOT EXISTS daily_stats (
  19. date TEXT PRIMARY KEY,
  20. new_users INTEGER NOT NULL DEFAULT 0,
  21. total_users INTEGER NOT NULL DEFAULT 0,
  22. peak_online INTEGER NOT NULL DEFAULT 0
  23. );
  24. -- 反馈表:记录设置页提交的问题与建议
  25. CREATE TABLE IF NOT EXISTS feedback (
  26. id INTEGER PRIMARY KEY AUTOINCREMENT,
  27. type TEXT NOT NULL,
  28. message TEXT NOT NULL,
  29. contact TEXT,
  30. app_version TEXT,
  31. user_agent TEXT,
  32. ip_hash TEXT,
  33. created_at TEXT NOT NULL DEFAULT (datetime('now'))
  34. );
  35. -- 索引:加速在线人数查询
  36. CREATE INDEX IF NOT EXISTS idx_sessions_online ON sessions(is_online) WHERE is_online = 1;
  37. CREATE INDEX IF NOT EXISTS idx_sessions_uuid ON sessions(uuid);
  38. CREATE INDEX IF NOT EXISTS idx_users_ip_hash ON users(ip_hash);
  39. CREATE INDEX IF NOT EXISTS idx_feedback_created_at ON feedback(created_at DESC);