TKK_E32231405/app/user-dashboard/lokasi-posyandu/supabase-review-query.txt

41 lines
1.4 KiB
Plaintext

-- Query Supabase untuk Tabel Ulasan (Reviews) Posyandu
-- 0. Aktifkan Ekstensi UUID (Jika belum aktif)
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
-- 1. Buat Tabel posyandu_reviews
CREATE TABLE IF NOT EXISTS posyandu_reviews (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
posyandu_id UUID REFERENCES detail_posyandu(id) ON DELETE CASCADE,
user_id UUID REFERENCES akun_balita(id) ON DELETE CASCADE,
rating INTEGER NOT NULL CHECK (rating >= 1 AND rating <= 5),
comment TEXT NOT NULL,
created_at TIMESTAMPTZ DEFAULT NOW()
);
-- 2. Aktifkan Row Level Security (RLS)
ALTER TABLE posyandu_reviews ENABLE ROW LEVEL SECURITY;
-- 3. Kebijakan RLS (Policies)
-- Kebijakan: Semua orang dapat melihat ulasan
CREATE POLICY "Anyone can view reviews"
ON posyandu_reviews FOR SELECT
USING (true);
-- Kebijakan: User terautentikasi dapat mengirim ulasan (untuk akun_balita)
CREATE POLICY "Authenticated users can insert reviews"
ON posyandu_reviews FOR INSERT
TO authenticated
WITH CHECK (auth.uid() = user_id);
-- Kebijakan: User dapat menghapus ulasan mereka sendiri
CREATE POLICY "Users can delete their own reviews"
ON posyandu_reviews FOR DELETE
TO authenticated
USING (auth.uid() = user_id);
-- 4. Indeks untuk Performa
CREATE INDEX IF NOT EXISTS idx_posyandu_reviews_posyandu_id ON posyandu_reviews(posyandu_id);
CREATE INDEX IF NOT EXISTS idx_posyandu_reviews_user_id ON posyandu_reviews(user_id);