-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathsetup_paint_tables.sql
More file actions
89 lines (75 loc) · 3.29 KB
/
setup_paint_tables.sql
File metadata and controls
89 lines (75 loc) · 3.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
-- =====================================================
-- COMPLETE PAINT MANAGEMENT SYSTEM SETUP
-- =====================================================
-- Run this script in your Supabase SQL editor to set up
-- the complete painting management system from scratch.
-- =====================================================
-- 1. CREATE PAINT_STROKES TABLE (if not exists)
-- =====================================================
CREATE TABLE IF NOT EXISTS public.paint_strokes (
id TEXT PRIMARY KEY,
user_id TEXT NOT NULL,
canvas_id TEXT NOT NULL DEFAULT '',
points JSONB NOT NULL,
color BIGINT NOT NULL,
stroke_width REAL NOT NULL,
"order" INTEGER NOT NULL,
is_deleted BOOLEAN DEFAULT FALSE,
version INTEGER DEFAULT 1,
created_at TIMESTAMPTZ DEFAULT NOW(),
modified_at TIMESTAMPTZ DEFAULT NOW()
);
-- Enable RLS for paint_strokes
ALTER TABLE public.paint_strokes ENABLE ROW LEVEL SECURITY;
-- Create RLS policy for paint_strokes
DROP POLICY IF EXISTS "Users can only access their own paint strokes" ON public.paint_strokes;
CREATE POLICY "Users can only access their own paint strokes" ON public.paint_strokes
FOR ALL USING (auth.uid()::text = user_id);
-- Create indexes for paint_strokes
CREATE INDEX IF NOT EXISTS idx_paint_strokes_user_id ON public.paint_strokes(user_id);
CREATE INDEX IF NOT EXISTS idx_paint_strokes_canvas_id ON public.paint_strokes(canvas_id);
CREATE INDEX IF NOT EXISTS idx_paint_strokes_modified_at ON public.paint_strokes(modified_at);
CREATE INDEX IF NOT EXISTS idx_paint_strokes_order ON public.paint_strokes("order");
-- Enable realtime for paint_strokes
ALTER PUBLICATION supabase_realtime ADD TABLE public.paint_strokes;
-- =====================================================
-- 2. CREATE PAINT_CANVASES TABLE
-- =====================================================
CREATE TABLE IF NOT EXISTS public.paint_canvases (
id TEXT PRIMARY KEY,
user_id TEXT NOT NULL,
title TEXT NOT NULL,
description TEXT,
thumbnail_stroke_data JSONB,
stroke_count INTEGER DEFAULT 0,
is_deleted BOOLEAN DEFAULT FALSE,
version INTEGER DEFAULT 1,
created_at TIMESTAMPTZ DEFAULT NOW(),
modified_at TIMESTAMPTZ DEFAULT NOW()
);
-- Enable RLS for paint_canvases
ALTER TABLE public.paint_canvases ENABLE ROW LEVEL SECURITY;
-- Create RLS policy for paint_canvases
DROP POLICY IF EXISTS "Users can only access their own paint canvases" ON public.paint_canvases;
CREATE POLICY "Users can only access their own paint canvases" ON public.paint_canvases
FOR ALL USING (auth.uid()::text = user_id);
-- Create indexes for paint_canvases
CREATE INDEX IF NOT EXISTS idx_paint_canvases_user_id ON public.paint_canvases(user_id);
CREATE INDEX IF NOT EXISTS idx_paint_canvases_modified_at ON public.paint_canvases(modified_at);
-- Enable realtime for paint_canvases
ALTER PUBLICATION supabase_realtime ADD TABLE public.paint_canvases;
-- =====================================================
-- SETUP COMPLETE - Run verification below
-- =====================================================
-- Verification query (run this separately to check setup):
/*
SELECT
'paint_canvases' as table_name,
COUNT(*) as record_count
FROM public.paint_canvases
UNION ALL
SELECT
'paint_strokes' as table_name,
COUNT(*) as record_count
FROM public.paint_strokes;
*/