-- name: UpsertInstrument :exec INSERT INTO instruments (id, market, venue, symbol, name, currency, provider_symbols) VALUES ($1, $2, $3, $4, $5, $6, $7) ON CONFLICT (id) DO UPDATE SET market = EXCLUDED.market, venue = EXCLUDED.venue, symbol = EXCLUDED.symbol, name = EXCLUDED.name, currency = EXCLUDED.currency, provider_symbols = EXCLUDED.provider_symbols; -- name: GetInstrument :one SELECT id, market, venue, symbol, name, currency, provider_symbols FROM instruments WHERE id = $1; -- name: ListInstruments :many SELECT id, market, venue, symbol, name, currency, provider_symbols FROM instruments; -- name: UpsertBar :exec INSERT INTO bars (instrument_id, timeframe, timestamp, open, high, low, close, volume) VALUES ($1, $2, $3, $4, $5, $6, $7, $8) ON CONFLICT (instrument_id, timeframe, timestamp) DO UPDATE SET open = EXCLUDED.open, high = EXCLUDED.high, low = EXCLUDED.low, close = EXCLUDED.close, volume = EXCLUDED.volume; -- name: GetBars :many SELECT instrument_id, timeframe, timestamp, open, high, low, close, volume FROM bars WHERE instrument_id = $1 AND timeframe = $2 AND timestamp >= $3 AND timestamp <= $4 ORDER BY timestamp ASC; -- name: UpsertRun :exec INSERT INTO backtest_runs (id, strategy_id, market, timeframe, from_time, to_time, status, created_at, updated_at) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9) ON CONFLICT (id) DO UPDATE SET strategy_id = EXCLUDED.strategy_id, market = EXCLUDED.market, timeframe = EXCLUDED.timeframe, from_time = EXCLUDED.from_time, to_time = EXCLUDED.to_time, status = EXCLUDED.status, created_at = EXCLUDED.created_at, updated_at = EXCLUDED.updated_at; -- name: GetRun :one SELECT id, strategy_id, market, timeframe, from_time, to_time, status, created_at, updated_at FROM backtest_runs WHERE id = $1;