feat: 初始化 React + Vite + Supabase 用户管理应用
- 使用 Vite 创建 React 应用基础结构,包含主应用布局和路由 - 集成 Supabase 客户端,实现用户表的 CRUD 操作 - 添加 Ant Design UI 组件库,构建用户管理界面 - 配置数据库迁移脚本,初始化 users 表及示例数据 - 设置开发环境配置,包括 ESLint、Git 忽略文件和项目依赖
This commit is contained in:
26
supabase/db_schema.sql
Normal file
26
supabase/db_schema.sql
Normal file
@@ -0,0 +1,26 @@
|
||||
-- 1. 创建 users 表
|
||||
CREATE TABLE IF NOT EXISTS public.users (
|
||||
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
email TEXT,
|
||||
role TEXT,
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT timezone('utc'::text, now()) NOT NULL
|
||||
);
|
||||
|
||||
-- 2. 开启行级安全 (RLS)
|
||||
ALTER TABLE public.users ENABLE ROW LEVEL SECURITY;
|
||||
|
||||
-- 3. 创建允许所有操作的策略 (注意:仅供开发测试使用)
|
||||
-- 允许匿名用户(anon)进行 SELECT, INSERT, UPDATE, DELETE
|
||||
CREATE POLICY "Enable all operations for anon users" ON public.users
|
||||
FOR ALL
|
||||
TO anon
|
||||
USING (true)
|
||||
WITH CHECK (true);
|
||||
|
||||
-- 4. 插入一些测试数据
|
||||
INSERT INTO public.users (name, email, role)
|
||||
VALUES
|
||||
('Alice', 'alice@example.com', 'Admin'),
|
||||
('Bob', 'bob@example.com', 'User'),
|
||||
('Charlie', 'charlie@example.com', 'Editor');
|
||||
45
supabase/migrations/20260127000000_init_users.sql
Normal file
45
supabase/migrations/20260127000000_init_users.sql
Normal file
@@ -0,0 +1,45 @@
|
||||
-- Migration: Create users table
|
||||
-- Created at: 2026-01-27
|
||||
|
||||
-- 1. Create the table
|
||||
CREATE TABLE IF NOT EXISTS public.users (
|
||||
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
email TEXT,
|
||||
role TEXT,
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT timezone('utc'::text, now()) NOT NULL
|
||||
);
|
||||
|
||||
-- 2. Enable RLS
|
||||
ALTER TABLE public.users ENABLE ROW LEVEL SECURITY;
|
||||
|
||||
-- 3. Create Policy (Dev Mode: Allow All)
|
||||
-- WARN: In production, you should restrict this!
|
||||
DO $$
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM pg_policies
|
||||
WHERE schemaname = 'public'
|
||||
AND tablename = 'users'
|
||||
AND policyname = 'Enable all operations for anon users'
|
||||
) THEN
|
||||
CREATE POLICY "Enable all operations for anon users" ON public.users
|
||||
FOR ALL
|
||||
TO anon
|
||||
USING (true)
|
||||
WITH CHECK (true);
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
-- 4. Seed Data (Optional)
|
||||
INSERT INTO public.users (name, email, role)
|
||||
SELECT 'Alice', 'alice@example.com', 'Admin'
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM public.users WHERE email = 'alice@example.com'
|
||||
);
|
||||
|
||||
INSERT INTO public.users (name, email, role)
|
||||
SELECT 'Bob', 'bob@example.com', 'User'
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM public.users WHERE email = 'bob@example.com'
|
||||
);
|
||||
Reference in New Issue
Block a user