Files
sitemente/supabase-setup.sql
T

79 lines
2.9 KiB
SQL

-- Supabase Database Setup for SiteMente Mission Control
-- Run this in Supabase SQL Editor
-- Enable UUID extension
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
-- Trading Journal Table
CREATE TABLE IF NOT EXISTS trades (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
user_id TEXT DEFAULT 'default',
pair TEXT NOT NULL,
direction TEXT NOT NULL CHECK (direction IN ('long', 'short')),
entry_price NUMERIC,
exit_price NUMERIC,
status TEXT NOT NULL DEFAULT 'open' CHECK (status IN ('open', 'closed')),
is_demo BOOLEAN DEFAULT true,
trader_style TEXT,
setup TEXT,
timeframe TEXT,
pnl NUMERIC,
pnl_percent NUMERIC,
opened_at TIMESTAMPTZ DEFAULT NOW(),
closed_at TIMESTAMPTZ,
created_at TIMESTAMPTZ DEFAULT NOW()
);
-- Tasks Table
CREATE TABLE IF NOT EXISTS tasks (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
user_id TEXT DEFAULT 'default',
title TEXT NOT NULL,
description TEXT,
status TEXT NOT NULL DEFAULT 'pending' CHECK (status IN ('pending', 'in_progress', 'completed')),
priority TEXT DEFAULT 'medium' CHECK (priority IN ('low', 'medium', 'high')),
due_date TIMESTAMPTZ,
created_at TIMESTAMPTZ DEFAULT NOW()
);
-- Leads/CRM Table
CREATE TABLE IF NOT EXISTS leads (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
user_id TEXT DEFAULT 'default',
name TEXT NOT NULL,
business_name TEXT,
phone TEXT,
email TEXT,
source TEXT,
status TEXT NOT NULL DEFAULT 'new' CHECK (status IN ('new', 'contacted', 'qualified', 'won', 'lost')),
notes TEXT,
created_at TIMESTAMPTZ DEFAULT NOW()
);
-- Enable RLS (Row Level Security) - optional for now
-- ALTER TABLE trades ENABLE ROW LEVEL SECURITY;
-- ALTER TABLE tasks ENABLE ROW LEVEL SECURITY;
-- ALTER TABLE leads ENABLE ROW LEVEL SECURITY;
-- Create indexes for better performance
CREATE INDEX IF NOT EXISTS idx_trades_user ON trades(user_id);
CREATE INDEX IF NOT EXISTS idx_trades_status ON trades(status);
CREATE INDEX IF NOT EXISTS idx_tasks_user ON tasks(user_id);
CREATE INDEX IF NOT EXISTS idx_tasks_status ON tasks(status);
CREATE INDEX IF NOT EXISTS idx_leads_user ON leads(user_id);
CREATE INDEX IF NOT EXISTS idx_leads_status ON leads(status);
-- Insert some sample data
INSERT INTO trades (pair, direction, entry_price, status, is_demo, trader_style, setup, timeframe) VALUES
('BTC/USD', 'long', 67500, 'open', true, 'thoth', 'Weekly structure break', '4H'),
('ETH/USD', 'long', 3200, 'open', true, 'dopetrades', 'Double bottom', '1H');
INSERT INTO tasks (title, description, status, priority) VALUES
('Fix Vapi integration', 'Get voice working on SiteMente', 'in_progress', 'high'),
('Contact local businesses', 'Reach out to leads in Benalmádena', 'pending', 'high'),
('Set up Supabase', 'Migrate from JSON to Supabase DB', 'in_progress', 'medium');
INSERT INTO leads (name, business_name, phone, status, source) VALUES
('Juan', 'Restaurante La Nina', '+34 952 449 193', 'new', 'cold_call'),
('Maria', 'Clínica Dental Málaga', '+34 951 123 456', 'contacted', 'website');