diff --git a/kustomize/base/initdb/001_init.sql b/kustomize/base/initdb/001_init.sql index 8062f96..03ffe35 100644 --- a/kustomize/base/initdb/001_init.sql +++ b/kustomize/base/initdb/001_init.sql @@ -163,3 +163,51 @@ AS $$ ORDER BY bucket DESC LIMIT p_limit; $$; + +-- Latest DLOB orderbook snapshots (top-N levels), per market. +-- Filled by a VPS worker (collector) and consumed by the UI via Hasura subscriptions. +CREATE TABLE IF NOT EXISTS public.dlob_l2_latest ( + market_name TEXT PRIMARY KEY, + market_type TEXT NOT NULL DEFAULT 'perp', + market_index INTEGER, + ts BIGINT, + slot BIGINT, + mark_price NUMERIC, + oracle_price NUMERIC, + best_bid_price NUMERIC, + best_ask_price NUMERIC, + bids JSONB, + asks JSONB, + raw JSONB, + updated_at TIMESTAMPTZ NOT NULL DEFAULT now() +); + +CREATE INDEX IF NOT EXISTS dlob_l2_latest_updated_at_idx + ON public.dlob_l2_latest (updated_at DESC); + +-- Derived stats for fast UI display. +CREATE TABLE IF NOT EXISTS public.dlob_stats_latest ( + market_name TEXT PRIMARY KEY, + market_type TEXT NOT NULL DEFAULT 'perp', + market_index INTEGER, + ts BIGINT, + slot BIGINT, + mark_price NUMERIC, + oracle_price NUMERIC, + best_bid_price NUMERIC, + best_ask_price NUMERIC, + mid_price NUMERIC, + spread_abs NUMERIC, + spread_bps NUMERIC, + depth_levels INTEGER, + depth_bid_base NUMERIC, + depth_ask_base NUMERIC, + depth_bid_usd NUMERIC, + depth_ask_usd NUMERIC, + imbalance NUMERIC, + raw JSONB, + updated_at TIMESTAMPTZ NOT NULL DEFAULT now() +); + +CREATE INDEX IF NOT EXISTS dlob_stats_latest_updated_at_idx + ON public.dlob_stats_latest (updated_at DESC);