38980-vm/app-9w9pd00g5j41/supabase/migrations/00003_create_bookmarks_and_collections.sql
2026-03-04 18:25:09 +00:00

82 lines
2.5 KiB
PL/PgSQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- Koleksiyonlar tablosu
CREATE TABLE IF NOT EXISTS collections (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
user_id UUID REFERENCES auth.users(id) ON DELETE CASCADE,
name TEXT NOT NULL,
description TEXT,
icon TEXT,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
-- Kaydedilen yerler tablosu
CREATE TABLE IF NOT EXISTS bookmarks (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
user_id UUID REFERENCES auth.users(id) ON DELETE CASCADE,
place_id UUID REFERENCES places(id) ON DELETE CASCADE,
collection_id UUID REFERENCES collections(id) ON DELETE SET NULL,
notes TEXT,
is_favorite BOOLEAN DEFAULT false,
created_at TIMESTAMPTZ DEFAULT NOW(),
UNIQUE(user_id, place_id)
);
-- RLS politikaları - Collections
ALTER TABLE collections ENABLE ROW LEVEL SECURITY;
CREATE POLICY "Kullanıcılar kendi koleksiyonlarını görebilir"
ON collections FOR SELECT
USING (auth.uid() = user_id);
CREATE POLICY "Kullanıcılar kendi koleksiyonlarını oluşturabilir"
ON collections FOR INSERT
WITH CHECK (auth.uid() = user_id);
CREATE POLICY "Kullanıcılar kendi koleksiyonlarını güncelleyebilir"
ON collections FOR UPDATE
USING (auth.uid() = user_id);
CREATE POLICY "Kullanıcılar kendi koleksiyonlarını silebilir"
ON collections FOR DELETE
USING (auth.uid() = user_id);
-- RLS politikaları - Bookmarks
ALTER TABLE bookmarks ENABLE ROW LEVEL SECURITY;
CREATE POLICY "Kullanıcılar kendi kayıtlarını görebilir"
ON bookmarks FOR SELECT
USING (auth.uid() = user_id);
CREATE POLICY "Kullanıcılar yer kaydedebilir"
ON bookmarks FOR INSERT
WITH CHECK (auth.uid() = user_id);
CREATE POLICY "Kullanıcılar kendi kayıtlarını güncelleyebilir"
ON bookmarks FOR UPDATE
USING (auth.uid() = user_id);
CREATE POLICY "Kullanıcılar kendi kayıtlarını silebilir"
ON bookmarks FOR DELETE
USING (auth.uid() = user_id);
-- Updated_at trigger
CREATE TRIGGER on_collection_updated
BEFORE UPDATE ON collections
FOR EACH ROW EXECUTE FUNCTION public.handle_updated_at();
-- Her kullanıcı için varsayılan koleksiyonlar oluştur (trigger)
CREATE OR REPLACE FUNCTION create_default_collections()
RETURNS TRIGGER AS $$
BEGIN
INSERT INTO collections (user_id, name, icon) VALUES
(NEW.id, 'Tüm Kaydedilenler', 'bookmark'),
(NEW.id, 'Favoriler', 'heart'),
(NEW.id, 'Görmek İstediklerim', 'eye');
RETURN NEW;
END;
$$ LANGUAGE plpgsql SECURITY DEFINER;
CREATE TRIGGER on_user_created_create_collections
AFTER INSERT ON profiles
FOR EACH ROW EXECUTE FUNCTION create_default_collections();