54 lines
2.1 KiB
SQL
54 lines
2.1 KiB
SQL
-- 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);
|