41 lines
1.4 KiB
SQL
41 lines
1.4 KiB
SQL
-- ============================================================================
|
|
-- Schema: trading
|
|
-- Table: watchlists
|
|
-- Description: Listas de seguimiento personalizadas de usuarios
|
|
-- Dependencies: auth.users
|
|
-- ============================================================================
|
|
|
|
CREATE TABLE trading.watchlists (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
|
|
-- Propietario
|
|
user_id UUID NOT NULL REFERENCES auth.users(id) ON DELETE CASCADE,
|
|
|
|
-- Configuración
|
|
name VARCHAR(100) NOT NULL,
|
|
description TEXT,
|
|
|
|
-- Ordenamiento
|
|
display_order INTEGER DEFAULT 0,
|
|
|
|
-- Estado
|
|
is_default BOOLEAN DEFAULT false,
|
|
is_public BOOLEAN DEFAULT false,
|
|
|
|
-- Timestamps
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
|
|
-- Constraint: nombre único por usuario
|
|
CONSTRAINT uq_watchlists_user_name UNIQUE (user_id, name)
|
|
);
|
|
|
|
-- Índices
|
|
CREATE INDEX idx_watchlists_user ON trading.watchlists(user_id);
|
|
CREATE INDEX idx_watchlists_user_default ON trading.watchlists(user_id, is_default) WHERE is_default = true;
|
|
|
|
-- Comentarios
|
|
COMMENT ON TABLE trading.watchlists IS 'Listas de seguimiento personalizadas de símbolos';
|
|
COMMENT ON COLUMN trading.watchlists.is_default IS 'Indica si es la watchlist por defecto del usuario';
|
|
COMMENT ON COLUMN trading.watchlists.is_public IS 'Indica si la watchlist es visible públicamente';
|