请先创建 Supabase 项目并填写以下信息:
/* 复制此 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);
-- 在 Supabase SQL Editor 中运行此命令 ALTER TABLE stx_messages ADD COLUMN IF NOT EXISTS icon_type TEXT DEFAULT 'dot';