Skip to main content

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}