diff --git a/crates/bin/pindexer/src/dex_ex/mod.rs b/crates/bin/pindexer/src/dex_ex/mod.rs index 9115a57ead..7a41e4f9f5 100644 --- a/crates/bin/pindexer/src/dex_ex/mod.rs +++ b/crates/bin/pindexer/src/dex_ex/mod.rs @@ -618,6 +618,26 @@ mod summary { } } +mod metadata { + use super::*; + + pub async fn set(dbtx: &mut PgTransaction<'_>, quote_asset: asset::Id) -> anyhow::Result<()> { + sqlx::query( + " + INSERT INTO dex_ex_metadata + VALUES (1, $1) + ON CONFLICT (id) DO UPDATE + SET id = EXCLUDED.id, + quote_asset_id = EXCLUDED.quote_asset_id + ", + ) + .bind(quote_asset.to_bytes()) + .execute(dbtx.as_mut()) + .await?; + Ok(()) + } +} + #[derive(Debug, Default, Clone, Copy)] struct PairMetrics { trades: f64, @@ -810,6 +830,7 @@ impl AppView for Component { dbtx: &mut PgTransaction, batch: EventBatch, ) -> Result<(), anyhow::Error> { + metadata::set(dbtx, self.denom).await?; let mut charts = HashMap::new(); let mut snapshots = HashMap::new(); let mut last_time = None; diff --git a/crates/bin/pindexer/src/dex_ex/schema.sql b/crates/bin/pindexer/src/dex_ex/schema.sql index 6de17b2be2..ddbf108887 100644 --- a/crates/bin/pindexer/src/dex_ex/schema.sql +++ b/crates/bin/pindexer/src/dex_ex/schema.sql @@ -76,3 +76,9 @@ CREATE TABLE IF NOT EXISTS dex_ex_aggregate_summary ( top_price_mover_end BYTEA NOT NULL, top_price_mover_change_percent FLOAT8 NOT NULL ); + +CREATE TABLE IF NOT EXISTS dex_ex_metadata ( + id INT PRIMARY KEY, + -- The asset id to use for prices in places such as the aggregate summary. + quote_asset_id BYTEA NOT NULL +);