Files
Pay2Gateway/docs/db_schema.sql
2026-01-18 16:48:15 +03:00

38 lines
1.2 KiB
SQL

-- Admin users table
CREATE TABLE admin_users (
id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
email TEXT UNIQUE NOT NULL,
created_at TIMESTAMPTZ DEFAULT NOW()
);
-- Register initial admin (User should replace this or add via dashboard)
-- INSERT INTO admin_users (email) VALUES ('your-email@example.com');
-- Transactions table
CREATE TABLE transactions (
id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
created_at TIMESTAMPTZ DEFAULT NOW(),
amount NUMERIC NOT NULL,
currency TEXT NOT NULL DEFAULT 'TRY',
status TEXT NOT NULL DEFAULT 'succeeded' CHECK (status IN ('pending', 'succeeded', 'failed')),
stripe_pi_id TEXT UNIQUE,
source_ref_id TEXT,
customer_name TEXT,
customer_phone TEXT,
callback_url TEXT,
metadata JSONB DEFAULT '{}'::jsonb
);
-- Enable RLS
ALTER TABLE transactions ENABLE ROW LEVEL SECURITY;
-- Create policy for admins to read all
CREATE POLICY "Admins can read all transactions" ON transactions
FOR SELECT
USING (auth.jwt() ->> 'email' IN (SELECT email FROM admin_users));
-- Create policy for service role to manage all
CREATE POLICY "Service role can manage all" ON transactions
USING (true)
WITH CHECK (true);