Files
gitlab-instance-0a899031_wxh5/supabase/migrations/001_knowledge_tables.sql
2026-03-11 10:26:40 -05:00

76 lines
2.5 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- 知识付费平台数据表
-- 在 Supabase SQL Editor 中执行
-- 电子书专栏
CREATE TABLE IF NOT EXISTS wxgzh_ebooks (
id BIGSERIAL PRIMARY KEY,
title TEXT NOT NULL,
cover TEXT,
description TEXT,
sort_order INT DEFAULT 0,
created_at TIMESTAMPTZ DEFAULT NOW()
);
-- 电子书章节
CREATE TABLE IF NOT EXISTS wxgzh_ebook_chapters (
id BIGSERIAL PRIMARY KEY,
ebook_id BIGINT NOT NULL REFERENCES wxgzh_ebooks(id) ON DELETE CASCADE,
title TEXT NOT NULL,
content TEXT,
is_free BOOLEAN DEFAULT false,
sort_order INT DEFAULT 0,
created_at TIMESTAMPTZ DEFAULT NOW()
);
-- 课程专栏
CREATE TABLE IF NOT EXISTS wxgzh_courses (
id BIGSERIAL PRIMARY KEY,
title TEXT NOT NULL,
cover TEXT,
description TEXT,
sort_order INT DEFAULT 0,
created_at TIMESTAMPTZ DEFAULT NOW()
);
-- 课程章节(视频 + 配套文章)
CREATE TABLE IF NOT EXISTS wxgzh_course_chapters (
id BIGSERIAL PRIMARY KEY,
course_id BIGINT NOT NULL REFERENCES wxgzh_courses(id) ON DELETE CASCADE,
title TEXT NOT NULL,
video_url TEXT,
article_markdown TEXT,
duration INT DEFAULT 0,
is_free BOOLEAN DEFAULT false,
sort_order INT DEFAULT 0,
created_at TIMESTAMPTZ DEFAULT NOW()
);
-- 若表已存在,可单独执行添加列:
-- ALTER TABLE wxgzh_course_chapters ADD COLUMN IF NOT EXISTS article_markdown TEXT;
-- VIP 用户表user_id 对应 auth.users.id
CREATE TABLE IF NOT EXISTS wxgzh_vip_users (
id BIGSERIAL PRIMARY KEY,
user_id UUID NOT NULL UNIQUE REFERENCES auth.users(id) ON DELETE CASCADE,
expire_at TIMESTAMPTZ NOT NULL,
created_at TIMESTAMPTZ DEFAULT NOW()
);
-- 启用 RLS
ALTER TABLE wxgzh_ebooks ENABLE ROW LEVEL SECURITY;
ALTER TABLE wxgzh_ebook_chapters ENABLE ROW LEVEL SECURITY;
ALTER TABLE wxgzh_courses ENABLE ROW LEVEL SECURITY;
ALTER TABLE wxgzh_course_chapters ENABLE ROW LEVEL SECURITY;
ALTER TABLE wxgzh_vip_users ENABLE ROW LEVEL SECURITY;
-- 公开读取策略(专栏和章节列表可匿名读)
CREATE POLICY "ebooks_public_read" ON wxgzh_ebooks FOR SELECT USING (true);
CREATE POLICY "ebook_chapters_public_read" ON wxgzh_ebook_chapters FOR SELECT USING (true);
CREATE POLICY "courses_public_read" ON wxgzh_courses FOR SELECT USING (true);
CREATE POLICY "course_chapters_public_read" ON wxgzh_course_chapters FOR SELECT USING (true);
-- VIP 表仅允许用户查询自己的记录
CREATE POLICY "vip_users_select_own" ON wxgzh_vip_users FOR SELECT USING (auth.uid() = user_id);
-- 示例数据可在 Supabase 后台手动插入,或使用 mock 数据(前端已内置)