Files
aitrade/pkg/db/migrations/001_init.sql
T
kaedwen ea141eb012
Build and Push Docker Image / build-and-push (push) Failing after 1m41s
initial
2026-07-02 20:09:44 +02:00

62 lines
1.8 KiB
SQL

-- Initial schema for AI Trading Application
-- Trades table
CREATE TABLE IF NOT EXISTS trades (
id INTEGER PRIMARY KEY AUTOINCREMENT,
symbol TEXT NOT NULL,
action TEXT NOT NULL CHECK(action IN ('BUY', 'SELL')),
quantity INTEGER NOT NULL,
status TEXT NOT NULL CHECK(status IN ('PENDING', 'APPROVED', 'REJECTED', 'SUBMITTED', 'FILLED', 'COMPLETED', 'STOPPED')),
confidence REAL NOT NULL,
reasoning TEXT,
target_price REAL,
executed_price REAL,
stop_loss_price REAL,
ib_order_id INTEGER,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
pending_until TIMESTAMP,
approved_at TIMESTAMP,
rejected_at TIMESTAMP,
submitted_at TIMESTAMP,
filled_at TIMESTAMP,
completed_at TIMESTAMP,
rejection_reason TEXT,
forced_by_user BOOLEAN DEFAULT FALSE
);
CREATE INDEX IF NOT EXISTS idx_trades_status ON trades(status);
CREATE INDEX IF NOT EXISTS idx_trades_symbol ON trades(symbol);
CREATE INDEX IF NOT EXISTS idx_trades_created_at ON trades(created_at DESC);
-- Balances table
CREATE TABLE IF NOT EXISTS balances (
id INTEGER PRIMARY KEY AUTOINCREMENT,
timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
total_value REAL NOT NULL,
cash_balance REAL NOT NULL,
buying_power REAL NOT NULL,
unrealized_pnl REAL,
realized_pnl REAL,
UNIQUE(timestamp)
);
-- News articles table
CREATE TABLE IF NOT EXISTS news_articles (
id INTEGER PRIMARY KEY AUTOINCREMENT,
source TEXT NOT NULL,
title TEXT NOT NULL,
url TEXT NOT NULL UNIQUE,
content TEXT,
published_at TIMESTAMP NOT NULL,
fetched_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
symbols TEXT,
sentiment_score REAL,
sentiment_label TEXT
);
CREATE INDEX IF NOT EXISTS idx_news_published_at ON news_articles(published_at DESC);