Reso / supabase_schema.sql
salch-cred
feat: Configure deployment setup for Vercel, Hugging Face, and Supabase
6699115
Raw
History Blame Contribute Delete
2.67 kB
-- Supabase Database Schema for Reso Privacy Compliance Console
-- Run this script in the SQL Editor of your Supabase Project.
-- 1. Rules Table
CREATE TABLE IF NOT EXISTS rules (
id SERIAL PRIMARY KEY,
max_amount NUMERIC NOT NULL DEFAULT 10000,
daily_limit NUMERIC NOT NULL DEFAULT 25000,
min_kyc_tier INT NOT NULL DEFAULT 1,
sanctions_enabled BOOLEAN NOT NULL DEFAULT TRUE,
updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);
-- Insert default rules if empty
INSERT INTO rules (id, max_amount, daily_limit, min_kyc_tier, sanctions_enabled)
VALUES (1, 10000.0, 25000.0, 1, TRUE)
ON CONFLICT (id) DO NOTHING;
-- 2. Wallets Table
CREATE TABLE IF NOT EXISTS wallets (
address VARCHAR(100) PRIMARY KEY,
kyc_tier INT NOT NULL DEFAULT 0,
is_sanctioned BOOLEAN NOT NULL DEFAULT FALSE,
name VARCHAR(100) NOT NULL DEFAULT '',
daily_volume NUMERIC NOT NULL DEFAULT 0.0,
updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);
-- Insert seed wallets
INSERT INTO wallets (address, kyc_tier, is_sanctioned, name, daily_volume)
VALUES
('GCLEANUSERADDRESSTHATISFINE00099', 2, FALSE, 'Alice (Tier 2 User)', 5000.0),
('GBASICKYCUSERADDRESS00000000001', 1, FALSE, 'Bob (Tier 1 User)', 0.0),
('GNOKYCUSERADDRESS000000000000002', 0, FALSE, 'Charlie (No KYC)', 0.0),
('GABC1SANCTIONEDEXAMPLEADDRESS0001', 1, TRUE, 'Sanctioned Entity A', 0.0)
ON CONFLICT (address) DO NOTHING;
-- 3. Escrows Table
CREATE TABLE IF NOT EXISTS escrows (
recipient VARCHAR(100) PRIMARY KEY,
sender VARCHAR(100) NOT NULL,
amount NUMERIC NOT NULL,
unlock_time BIGINT NOT NULL,
onchain_tx VARCHAR(255) NOT NULL,
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);
-- 4. Audit Logs Table
CREATE TABLE IF NOT EXISTS audit_logs (
id BIGSERIAL PRIMARY KEY,
timestamp VARCHAR(50) NOT NULL,
sender VARCHAR(100) NOT NULL,
amount NUMERIC NOT NULL,
rule_checked VARCHAR(100) NOT NULL,
status VARCHAR(50) NOT NULL,
reason TEXT NOT NULL,
proof_ref VARCHAR(100) NOT NULL,
merkle_root VARCHAR(100) NOT NULL,
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);
-- Seed initial audit log
INSERT INTO audit_logs (timestamp, sender, amount, rule_checked, status, reason, proof_ref, merkle_root)
VALUES (
TO_CHAR(NOW(), 'YYYY-MM-DD HH24:MI:SS'),
'GABC1SANCTIONEDEXAMPLEADDRESS0001',
250.0,
'Sanctions screen',
'blocked',
'Address is listed on the active sanctions list (proven via non-membership check failure)',
'0x9f2a24c8b618bc360b0e5d41c888ee11ec9f2a24c8b618bc360b0e5d41c888ee11',
'0x9f2a24c8b618bc...'
) ON CONFLICT DO NOTHING;