prism-app / src /prism /database /schema.sql
lisekarimi's picture
Deploy prism v0.2.0
cc752f9
-- Create positions table
CREATE TABLE IF NOT EXISTS swap_positions (
position_id VARCHAR(50) PRIMARY KEY,
trade_date DATE NOT NULL,
maturity_date DATE NOT NULL,
notional DECIMAL(15,2) NOT NULL,
fixed_rate DECIMAL(6,4) NOT NULL,
float_index VARCHAR(20) NOT NULL,
pay_receive VARCHAR(10) NOT NULL,
currency VARCHAR(3) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Create market rates table
CREATE TABLE IF NOT EXISTS market_rates (
rate_id SERIAL PRIMARY KEY,
tenor VARCHAR(10) NOT NULL,
currency VARCHAR(3) NOT NULL,
mid_rate DECIMAL(6,4) NOT NULL,
bid_rate DECIMAL(6,4),
ask_rate DECIMAL(6,4),
timestamp TIMESTAMP NOT NULL,
source VARCHAR(50)
);
-- Create trade signals table
CREATE TABLE IF NOT EXISTS trade_signals (
signal_id SERIAL PRIMARY KEY,
position_id VARCHAR(50),
signal_type VARCHAR(20),
reason TEXT,
current_pnl DECIMAL(15,2),
recommended_action TEXT,
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
executed BOOLEAN DEFAULT FALSE,
FOREIGN KEY (position_id) REFERENCES swap_positions(position_id)
);
-- Create demo executions table for rate limiting
CREATE TABLE IF NOT EXISTS demo_executions (
id SERIAL PRIMARY KEY,
ip_address VARCHAR(45) NOT NULL,
last_run TIMESTAMP DEFAULT NOW()
);
CREATE INDEX IF NOT EXISTS idx_ip_time ON demo_executions(ip_address, last_run);