added new exchanges system
This commit is contained in:
parent
95eda4a842
commit
263e9513b7
98 changed files with 4643 additions and 1496 deletions
63
database/postgres/init/02-master-schema.sql
Normal file
63
database/postgres/init/02-master-schema.sql
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
-- Simple Master Schema for Symbol Resolution
|
||||
-- Connect to trading_bot database
|
||||
\c trading_bot;
|
||||
|
||||
-- Exchanges Table
|
||||
CREATE TABLE IF NOT EXISTS exchanges (
|
||||
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
||||
code VARCHAR(10) UNIQUE NOT NULL, -- NASDAQ, NYSE, TSX, etc.
|
||||
name VARCHAR(255) NOT NULL, -- Full exchange name
|
||||
country CHAR(2) NOT NULL, -- US, CA, GB
|
||||
currency CHAR(3) NOT NULL DEFAULT 'USD', -- USD, CAD, GBP
|
||||
is_active BOOLEAN DEFAULT true,
|
||||
created_at TIMESTAMP DEFAULT NOW(),
|
||||
updated_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- Symbols Table
|
||||
CREATE TABLE IF NOT EXISTS symbols (
|
||||
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
||||
symbol VARCHAR(20) NOT NULL, -- AAPL, SHOP, etc.
|
||||
exchange_id UUID REFERENCES exchanges(id),
|
||||
company_name VARCHAR(255),
|
||||
sector VARCHAR(100),
|
||||
country CHAR(2),
|
||||
currency CHAR(3),
|
||||
is_active BOOLEAN DEFAULT true,
|
||||
created_at TIMESTAMP DEFAULT NOW(),
|
||||
updated_at TIMESTAMP DEFAULT NOW(),
|
||||
UNIQUE(symbol, exchange_id)
|
||||
);
|
||||
|
||||
-- Provider Symbol Mappings (How each provider refers to our symbols)
|
||||
CREATE TABLE IF NOT EXISTS provider_mappings (
|
||||
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
||||
symbol_id UUID REFERENCES symbols(id),
|
||||
provider VARCHAR(50) NOT NULL, -- 'qm', 'yahoo', 'ib', etc.
|
||||
provider_symbol VARCHAR(100) NOT NULL, -- How provider names it: "AAPL:NASDAQ", "SHOP.TO"
|
||||
provider_exchange VARCHAR(50), -- Provider's exchange code
|
||||
confidence DECIMAL(3,2) DEFAULT 1.0, -- 0.0 to 1.0 matching confidence
|
||||
verified BOOLEAN DEFAULT false, -- Manually verified flag
|
||||
last_seen TIMESTAMP DEFAULT NOW(),
|
||||
created_at TIMESTAMP DEFAULT NOW(),
|
||||
UNIQUE(provider, provider_symbol)
|
||||
);
|
||||
|
||||
-- Simple sync tracking table
|
||||
CREATE TABLE IF NOT EXISTS sync_status (
|
||||
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
||||
provider VARCHAR(50) NOT NULL,
|
||||
data_type VARCHAR(50) NOT NULL, -- 'symbols', 'exchanges'
|
||||
last_sync_at TIMESTAMP,
|
||||
last_sync_count INTEGER DEFAULT 0,
|
||||
sync_errors TEXT,
|
||||
created_at TIMESTAMP DEFAULT NOW(),
|
||||
updated_at TIMESTAMP DEFAULT NOW(),
|
||||
UNIQUE(provider, data_type)
|
||||
);
|
||||
|
||||
-- Create basic indexes
|
||||
CREATE INDEX IF NOT EXISTS idx_symbols_symbol ON symbols(symbol);
|
||||
CREATE INDEX IF NOT EXISTS idx_symbols_exchange ON symbols(exchange_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_provider_mappings_provider ON provider_mappings(provider, provider_symbol);
|
||||
CREATE INDEX IF NOT EXISTS idx_provider_mappings_symbol ON provider_mappings(symbol_id);
|
||||
Loading…
Add table
Add a link
Reference in a new issue