-- 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);
