Spaces:
Runtime error
Runtime error
Download supabase_schema.sql from tarkovski/venorly-api: direct link, hf CLI and curl.
- Browser
- Download file 7.18 kB
-
https://huggingface.co/spaces/tarkovski/venorly-api/resolve/main/supabase_schema.sql
- Command line
-
hf download hf://spaces/tarkovski/venorly-api/supabase_schema.sql
-
curl -L -o supabase_schema.sql https://huggingface.co/spaces/tarkovski/venorly-api/resolve/main/supabase_schema.sql
7.18 kB
| -- Users (B2B SaaS Abonelik ve Kredi Takibi) | |
| CREATE TABLE users ( | |
| id UUID PRIMARY KEY DEFAULT gen_random_uuid(), | |
| clerk_id TEXT UNIQUE NOT NULL, | |
| stripe_customer_id TEXT UNIQUE, | |
| email TEXT NOT NULL, | |
| plan_type TEXT DEFAULT 'free', | |
| credits INT DEFAULT 5, | |
| created_at TIMESTAMPTZ DEFAULT now() | |
| ); | |
| ALTER TABLE users ENABLE ROW LEVEL SECURITY; | |
| CREATE POLICY "Enable read access for all users" ON users FOR SELECT USING (true); | |
| CREATE POLICY "Enable insert access for all users" ON users FOR INSERT WITH CHECK (true); | |
| CREATE POLICY "Enable update access for all users" ON users FOR UPDATE USING (true); | |
| -- Scans (Taramalar) | |
| CREATE TABLE scans ( | |
| id UUID PRIMARY KEY DEFAULT gen_random_uuid(), | |
| category TEXT NOT NULL, | |
| mode TEXT NOT NULL, | |
| status TEXT DEFAULT 'completed', | |
| report_preview TEXT, | |
| leads_count INT DEFAULT 0, | |
| angles_count INT DEFAULT 0, | |
| full_report JSONB, | |
| created_at TIMESTAMPTZ DEFAULT now() | |
| ); | |
| -- Leads (Müşteri Adayları) | |
| CREATE TABLE leads ( | |
| id UUID PRIMARY KEY DEFAULT gen_random_uuid(), | |
| source TEXT NOT NULL, | |
| title TEXT NOT NULL, | |
| url TEXT, | |
| description TEXT, | |
| score INT DEFAULT 0, | |
| status TEXT DEFAULT 'new', | |
| dm_template TEXT, | |
| scan_category TEXT, | |
| created_at TIMESTAMPTZ DEFAULT now() | |
| ); | |
| -- Waitlists (Bekleme Listeleri) | |
| CREATE TABLE waitlists ( | |
| id TEXT PRIMARY KEY, | |
| title TEXT NOT NULL, | |
| description TEXT, | |
| target_audience TEXT, | |
| emails TEXT[] DEFAULT '{}', | |
| created_at TIMESTAMPTZ DEFAULT now() | |
| ); | |
| -- Allow public access for now since we don't have auth yet | |
| ALTER TABLE scans ENABLE ROW LEVEL SECURITY; | |
| CREATE POLICY "Enable read access for all users" ON scans FOR SELECT USING (true); | |
| CREATE POLICY "Enable insert access for all users" ON scans FOR INSERT WITH CHECK (true); | |
| CREATE POLICY "Enable update access for all users" ON scans FOR UPDATE USING (true); | |
| ALTER TABLE leads ENABLE ROW LEVEL SECURITY; | |
| CREATE POLICY "Enable read access for all users" ON leads FOR SELECT USING (true); | |
| CREATE POLICY "Enable insert access for all users" ON leads FOR INSERT WITH CHECK (true); | |
| CREATE POLICY "Enable update access for all users" ON leads FOR UPDATE USING (true); | |
| ALTER TABLE waitlists ENABLE ROW LEVEL SECURITY; | |
| CREATE POLICY "Enable read access for all users" ON waitlists FOR SELECT USING (true); | |
| CREATE POLICY "Enable insert access for all users" ON waitlists FOR INSERT WITH CHECK (true); | |
| CREATE POLICY "Enable update access for all users" ON waitlists FOR UPDATE USING (true); | |
| -- Chat Messages (AI Fikir Danışmanı Sohbet Geçmişi) | |
| CREATE TABLE chat_messages ( | |
| id UUID PRIMARY KEY DEFAULT gen_random_uuid(), | |
| scan_id TEXT NOT NULL, | |
| role TEXT NOT NULL, | |
| content TEXT NOT NULL, | |
| created_at TIMESTAMPTZ DEFAULT now() | |
| ); | |
| ALTER TABLE chat_messages ENABLE ROW LEVEL SECURITY; | |
| CREATE POLICY "Enable read access for all users" ON chat_messages FOR SELECT USING (true); | |
| CREATE POLICY "Enable insert access for all users" ON chat_messages FOR INSERT WITH CHECK (true); | |
| -- ============================================================ | |
| -- GALLERY (Discover Gallery — V8) | |
| -- Mevcut scans tablosuna gallery kolonları eklenir. | |
| -- Supabase SQL Editöründe çalıştır. | |
| -- ============================================================ | |
| ALTER TABLE scans ADD COLUMN IF NOT EXISTS is_gallery BOOLEAN DEFAULT false; | |
| ALTER TABLE scans ADD COLUMN IF NOT EXISTS gallery_title TEXT; | |
| ALTER TABLE scans ADD COLUMN IF NOT EXISTS gallery_summary TEXT; | |
| ALTER TABLE scans ADD COLUMN IF NOT EXISTS gallery_tags TEXT[]; | |
| ALTER TABLE scans ADD COLUMN IF NOT EXISTS gallery_score INT DEFAULT 0; | |
| ALTER TABLE scans ADD COLUMN IF NOT EXISTS gallery_emoji TEXT DEFAULT '💡'; | |
| -- "2025-W15" formatı — aynı kategori + hafta için dedup | |
| ALTER TABLE scans ADD COLUMN IF NOT EXISTS gallery_week TEXT; | |
| -- Duplikasyon önleme: aynı kategori + aynı hafta sadece 1 galeri kaydı | |
| CREATE UNIQUE INDEX IF NOT EXISTS idx_gallery_category_week | |
| ON scans (category, gallery_week) | |
| WHERE is_gallery = true; | |
| -- Galeri listeleme sorguları için bileşik index | |
| CREATE INDEX IF NOT EXISTS idx_gallery_listing | |
| ON scans (is_gallery, gallery_score DESC, created_at DESC) | |
| WHERE is_gallery = true; | |
| -- ============================================================ | |
| -- ALERTS (Niş Alarm Sistemi — V8) | |
| -- ============================================================ | |
| CREATE TABLE IF NOT EXISTS alerts ( | |
| id UUID PRIMARY KEY DEFAULT gen_random_uuid(), | |
| keyword TEXT NOT NULL, | |
| email TEXT NOT NULL, | |
| channels TEXT[] DEFAULT '{"reddit","github","huggingface"}', | |
| frequency TEXT DEFAULT 'daily', -- 'daily' | 'weekly' | |
| is_active BOOLEAN DEFAULT true, | |
| last_triggered_at TIMESTAMPTZ, | |
| created_at TIMESTAMPTZ DEFAULT now() | |
| ); | |
| ALTER TABLE alerts ENABLE ROW LEVEL SECURITY; | |
| CREATE POLICY "Enable read access for all users" ON alerts FOR SELECT USING (true); | |
| CREATE POLICY "Enable insert access for all users" ON alerts FOR INSERT WITH CHECK (true); | |
| CREATE POLICY "Enable update access for all users" ON alerts FOR UPDATE USING (true); | |
| CREATE POLICY "Enable delete access for all users" ON alerts FOR DELETE USING (true); | |
| CREATE INDEX IF NOT EXISTS idx_alerts_active ON alerts (is_active, frequency) WHERE is_active = true; | |
| -- ============================================================ | |
| -- API PRICING (Birim Maliyet Veritabanı — S1) | |
| -- AI sağlayıcılarının güncel fiyat snapshot'ları. | |
| -- ============================================================ | |
| CREATE TABLE IF NOT EXISTS api_pricing ( | |
| id UUID PRIMARY KEY DEFAULT gen_random_uuid(), | |
| provider TEXT NOT NULL, | |
| model TEXT NOT NULL, | |
| unit TEXT, | |
| price_usd TEXT, | |
| note TEXT, | |
| scraped_at TIMESTAMPTZ NOT NULL DEFAULT now() | |
| ); | |
| CREATE INDEX IF NOT EXISTS idx_api_pricing_provider ON api_pricing (provider, model, scraped_at DESC); | |
| ALTER TABLE api_pricing ENABLE ROW LEVEL SECURITY; | |
| CREATE POLICY "Enable read access for all users" ON api_pricing FOR SELECT USING (true); | |
| CREATE POLICY "Enable insert access for all users" ON api_pricing FOR INSERT WITH CHECK (true); | |
| -- ============================================================ | |
| -- AUDIT TRAIL (Güven Endeksi Denetim Kaydı — S1/S5) | |
| -- Her rapordaki iddiaların kaynak eşleştirme sonuçları. | |
| -- ============================================================ | |
| CREATE TABLE IF NOT EXISTS audit_trail ( | |
| id UUID PRIMARY KEY DEFAULT gen_random_uuid(), | |
| report_id TEXT NOT NULL, | |
| claim_text TEXT NOT NULL, | |
| claim_class TEXT, -- 'critical' | 'material' | 'descriptive' | |
| source_url TEXT, | |
| verified BOOLEAN DEFAULT false, | |
| confidence FLOAT, | |
| unknown_category TEXT, -- fallback durumunda kategori logu | |
| created_at TIMESTAMPTZ DEFAULT now() | |
| ); | |
| CREATE INDEX IF NOT EXISTS idx_audit_trail_report ON audit_trail (report_id); | |
| ALTER TABLE audit_trail ENABLE ROW LEVEL SECURITY; | |
| CREATE POLICY "Enable read access for all users" ON audit_trail FOR SELECT USING (true); | |
| CREATE POLICY "Enable insert access for all users" ON audit_trail FOR INSERT WITH CHECK (true); | |