forge_runtime/signals/views.rs
1//! Materialized view refresh for signals dashboards.
2//!
3//! Refreshes views concurrently (non-blocking reads) every 5 minutes.
4
5use sqlx::PgPool;
6use tracing::{debug, error};
7
8/// Refresh all signals materialized views concurrently.
9pub async fn refresh_views(pool: &PgPool) {
10 let result = sqlx::query("SELECT forge_signals_refresh_views()")
11 .execute(pool)
12 .await;
13
14 match result {
15 Ok(_) => debug!("refreshed signal materialized views"),
16 Err(e) => error!(error = %e, "failed to refresh signal materialized views"),
17 }
18}