phase 2
This commit is contained in:
53
supabase/migrations/001_user_progress.sql
Normal file
53
supabase/migrations/001_user_progress.sql
Normal file
@@ -0,0 +1,53 @@
|
||||
-- Migration 001: user_progress + writing_submissions tables with RLS
|
||||
-- Run in Supabase Dashboard → SQL Editor (after schema.sql)
|
||||
|
||||
-- ============================================================
|
||||
-- Test results + vocab progress
|
||||
-- ============================================================
|
||||
CREATE TABLE IF NOT EXISTS user_progress (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
user_id UUID NOT NULL REFERENCES auth.users(id) ON DELETE CASCADE,
|
||||
type TEXT NOT NULL CHECK (type IN ('test', 'vocab')),
|
||||
data JSONB NOT NULL,
|
||||
created_at TIMESTAMPTZ DEFAULT now()
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_user_progress_user_id ON user_progress(user_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_user_progress_type ON user_progress(user_id, type);
|
||||
|
||||
-- ============================================================
|
||||
-- Writing submissions with AI feedback
|
||||
-- ============================================================
|
||||
CREATE TABLE IF NOT EXISTS writing_submissions (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
user_id UUID NOT NULL REFERENCES auth.users(id) ON DELETE CASCADE,
|
||||
content TEXT NOT NULL,
|
||||
feedback JSONB NOT NULL,
|
||||
created_at TIMESTAMPTZ DEFAULT now()
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_writing_submissions_user_id ON writing_submissions(user_id);
|
||||
|
||||
-- ============================================================
|
||||
-- Row Level Security
|
||||
-- ============================================================
|
||||
ALTER TABLE user_progress ENABLE ROW LEVEL SECURITY;
|
||||
ALTER TABLE writing_submissions ENABLE ROW LEVEL SECURITY;
|
||||
|
||||
-- user_progress: authenticated users own their rows
|
||||
CREATE POLICY "Users can insert own progress"
|
||||
ON user_progress FOR INSERT
|
||||
WITH CHECK (auth.uid() = user_id);
|
||||
|
||||
CREATE POLICY "Users can read own progress"
|
||||
ON user_progress FOR SELECT
|
||||
USING (auth.uid() = user_id);
|
||||
|
||||
-- writing_submissions: authenticated users own their rows
|
||||
CREATE POLICY "Users can insert own submissions"
|
||||
ON writing_submissions FOR INSERT
|
||||
WITH CHECK (auth.uid() = user_id);
|
||||
|
||||
CREATE POLICY "Users can read own submissions"
|
||||
ON writing_submissions FOR SELECT
|
||||
USING (auth.uid() = user_id);
|
||||
Reference in New Issue
Block a user