xtablo-source/supabase/migrations_backup/08_create_tablos_table.sql

42 lines
1.4 KiB
MySQL
Raw Permalink Normal View History

2025-06-30 20:34:04 +00:00
-- Create tablos table
CREATE TABLE IF NOT EXISTS tablos (
id SERIAL PRIMARY KEY,
2025-07-03 19:42:49 +00:00
owner_id UUID NOT NULL,
2025-06-30 20:34:04 +00:00
name VARCHAR(255) NOT NULL,
image TEXT,
color VARCHAR(50),
status VARCHAR(20) NOT NULL DEFAULT 'todo',
position INTEGER NOT NULL DEFAULT 0,
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
deleted_at TIMESTAMP WITH TIME ZONE DEFAULT NULL,
-- Constraint to ensure status is one of the allowed values
CONSTRAINT tablos_status_check CHECK (status IN ('todo', 'in_progress', 'done'))
);
-- Enable Row Level Security
ALTER TABLE tablos ENABLE ROW LEVEL SECURITY;
-- Create policy to allow users to see only their own tablos
2025-07-03 19:42:49 +00:00
CREATE POLICY "Users can view tablos they have access to" ON tablos
2025-07-05 16:42:40 +00:00
FOR SELECT
TO authenticated
USING (
2025-07-03 19:42:49 +00:00
(SELECT auth.uid()) = owner_id
OR EXISTS (
2025-07-05 16:42:40 +00:00
SELECT 1 FROM tablo_access WHERE tablo_id = tablos.id AND user_id = (SELECT auth.uid())
2025-07-03 19:42:49 +00:00
)
);
2025-06-30 20:34:04 +00:00
-- Create policy to allow users to insert their own tablos
CREATE POLICY "Users can insert own tablos" ON tablos
2025-07-05 16:42:40 +00:00
FOR INSERT
TO authenticated
WITH CHECK ((SELECT auth.uid()) = owner_id);
2025-06-30 20:34:04 +00:00
2025-07-05 16:42:40 +00:00
-- -- Create policy to allow users to update their own tablos
2025-06-30 20:34:04 +00:00
CREATE POLICY "Users can update own tablos" ON tablos
2025-07-05 16:42:40 +00:00
FOR UPDATE
TO authenticated
USING ((SELECT auth.uid()) = owner_id)
WITH CHECK ((SELECT auth.uid()) = owner_id);