配置 Supabase

请先创建 Supabase 项目并填写以下信息:

⚠ 重要:选择正确的设置方式
情况 A:全新安装(首次使用时空Chat)
运行下方完整的 SQL 创建所有表。
情况 B:已有数据库(正在修复图标发布错误)
不要运行完整 SQL! 只需运行下方的升级命令即可。

📦 完整安装 SQL(全新安装使用)

/* 复制此 SQL 到 Supabase SQL Editor 运行 */
CREATE TABLE stx_users (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  name TEXT NOT NULL,
  avatar_color TEXT,
  created_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE TABLE stx_messages (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  user_id UUID REFERENCES stx_users(id),
  lat DOUBLE PRECISION NOT NULL,
  lng DOUBLE PRECISION NOT NULL,
  text TEXT NOT NULL,
  image_data TEXT,
  icon_type TEXT DEFAULT 'dot',
  is_anonymous BOOLEAN DEFAULT FALSE,
  is_real_location BOOLEAN DEFAULT FALSE,
  created_at TIMESTAMPTZ DEFAULT NOW(),
  last_activity_at TIMESTAMPTZ DEFAULT NOW(),
  expires_at TIMESTAMPTZ NOT NULL
);
CREATE TABLE stx_replies (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  message_id UUID REFERENCES stx_messages(id) ON DELETE CASCADE,
  user_id UUID REFERENCES stx_users(id),
  text TEXT NOT NULL,
  image_data TEXT,
  created_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE TABLE stx_likes (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  message_id UUID REFERENCES stx_messages(id) ON DELETE CASCADE,
  user_id UUID REFERENCES stx_users(id),
  UNIQUE(message_id, user_id)
);
CREATE TABLE stx_follows (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  follower_id UUID REFERENCES stx_users(id),
  following_id UUID REFERENCES stx_users(id),
  UNIQUE(follower_id, following_id)
);
CREATE TABLE stx_notifications (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  for_user_id UUID REFERENCES stx_users(id),
  type TEXT,
  message_id UUID REFERENCES stx_messages(id) ON DELETE CASCADE,
  from_user_id UUID REFERENCES stx_users(id),
  text TEXT,
  read BOOLEAN DEFAULT FALSE,
  created_at TIMESTAMPTZ DEFAULT NOW()
);
ALTER TABLE stx_messages ENABLE ROW LEVEL SECURITY;
ALTER TABLE stx_users ENABLE ROW LEVEL SECURITY;
ALTER TABLE stx_replies ENABLE ROW LEVEL SECURITY;
ALTER TABLE stx_likes ENABLE ROW LEVEL SECURITY;
ALTER TABLE stx_follows ENABLE ROW LEVEL SECURITY;
ALTER TABLE stx_notifications ENABLE ROW LEVEL SECURITY;
CREATE POLICY "public read"   ON stx_messages FOR SELECT USING (true);
CREATE POLICY "public insert" ON stx_messages FOR INSERT WITH CHECK (true);
CREATE POLICY "public update" ON stx_messages FOR UPDATE USING (true);
CREATE POLICY "public delete" ON stx_messages FOR DELETE USING (true);
CREATE POLICY "public read"   ON stx_users FOR SELECT USING (true);
CREATE POLICY "public insert" ON stx_users FOR INSERT WITH CHECK (true);
CREATE POLICY "public read"   ON stx_replies FOR SELECT USING (true);
CREATE POLICY "public insert" ON stx_replies FOR INSERT WITH CHECK (true);
CREATE POLICY "public read"   ON stx_likes FOR SELECT USING (true);
CREATE POLICY "public insert" ON stx_likes FOR INSERT WITH CHECK (true);
CREATE POLICY "public delete" ON stx_likes FOR DELETE USING (true);
CREATE POLICY "public read"   ON stx_follows FOR SELECT USING (true);
CREATE POLICY "public insert" ON stx_follows FOR INSERT WITH CHECK (true);
CREATE POLICY "public delete" ON stx_follows FOR DELETE USING (true);
CREATE POLICY "public read"   ON stx_notifications FOR SELECT USING (true);
CREATE POLICY "public insert" ON stx_notifications FOR INSERT WITH CHECK (true);
CREATE POLICY "public update" ON stx_notifications FOR UPDATE USING (true);

🔄 升级 SQL(已有数据库,添加图标功能)

如果您遇到 "could not find the 'icon_type' column" 错误,说明数据库已存在但缺少图标字段。
只需运行以下命令:
-- 在 Supabase SQL Editor 中运行此命令
ALTER TABLE stx_messages ADD COLUMN IF NOT EXISTS icon_type TEXT DEFAULT 'dot';
✅ 此命令安全:不会影响现有数据,只会添加缺少的字段
  1. 前往 supabase.com 创建免费项目
  2. 根据您的情况运行上方对应的 SQL
  3. 在 Project Settings → API 中复制 URL 和 anon key,填入代码顶部的 SUPABASE_URLSUPABASE_ANON 变量后刷新页面。
正在连接时空...
点击地图任意位置发布信息
信息详情
通知