diff --git a/server/schema_supabase.sql b/server/schema_supabase.sql index fc81ac0..6f11d95 100644 --- a/server/schema_supabase.sql +++ b/server/schema_supabase.sql @@ -1,8 +1,8 @@ -- ── Esquema Supabase PostgreSQL (migrado de SQLite) ────────────── --- Tabla users (Persona A) +-- Tabla users (Persona A) — ID como UUID para Supabase Auth CREATE TABLE IF NOT EXISTS users ( - id BIGSERIAL PRIMARY KEY, + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), email TEXT UNIQUE NOT NULL, phone TEXT, password_hash TEXT NOT NULL, @@ -13,7 +13,7 @@ CREATE TABLE IF NOT EXISTS users ( -- Tabla addresses (Persona A) CREATE TABLE IF NOT EXISTS addresses ( id BIGSERIAL PRIMARY KEY, - user_id BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE, + user_id UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE, alias TEXT, lat DOUBLE PRECISION NOT NULL, lng DOUBLE PRECISION NOT NULL, @@ -23,7 +23,7 @@ CREATE TABLE IF NOT EXISTS addresses ( -- Tabla notification_preferences (Persona A) CREATE TABLE IF NOT EXISTS notification_preferences ( - user_id BIGINT PRIMARY KEY REFERENCES users(id) ON DELETE CASCADE, + user_id UUID PRIMARY KEY REFERENCES users(id) ON DELETE CASCADE, notify_proximity BOOLEAN DEFAULT TRUE, notify_breakdown BOOLEAN DEFAULT TRUE, notify_delay BOOLEAN DEFAULT TRUE, @@ -91,15 +91,15 @@ ALTER TABLE notificaciones ENABLE ROW LEVEL SECURITY; -- Policy: users solo ven su propio perfil CREATE POLICY "Users can view own profile" ON users - FOR SELECT USING (auth.uid()::TEXT = id::TEXT); + FOR SELECT USING (auth.uid() = id); -- Policy: addresses solo de usuario autenticado CREATE POLICY "Users can view own addresses" ON addresses - FOR SELECT USING (user_id = auth.uid()::BIGINT); + FOR SELECT USING (user_id = auth.uid()); -- Policy: notification_preferences solo de usuario autenticado CREATE POLICY "Users can view own preferences" ON notification_preferences - FOR SELECT USING (user_id = auth.uid()::BIGINT); + FOR SELECT USING (user_id = auth.uid()); -- ── Seed data ────────────────────────────────────────────────── INSERT INTO rutas (id, nombre, turno) VALUES