79 lines
2.9 KiB
SQL
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');
|