xtablo-source/sql/08_create_tablos_table.sql

36 lines
1.2 KiB
MySQL
Raw 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
FOR SELECT USING (
(SELECT auth.uid()) = owner_id
OR EXISTS (
SELECT 1 FROM tablo_access WHERE tablo_id = tablos.id AND user_id = auth.uid()
)
);
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-03 19:42:49 +00:00
FOR INSERT WITH CHECK (auth.uid() = owner_id);
2025-06-30 20:34:04 +00:00
-- Create policy to allow users to update their own tablos
CREATE POLICY "Users can update own tablos" ON tablos
2025-07-03 19:42:49 +00:00
FOR UPDATE USING (auth.uid() = owner_id);