use anyhow::Result;
use futures::future::BoxFuture;
use prometheus::Registry;
use sqlx::PgPool;
use std::collections::HashMap;
#[macro_use]
mod register_macro;
pub trait Collector {
fn name(&self) -> &'static str;
fn register_metrics(&self, registry: &Registry) -> Result<()>;
fn collect<'a>(&'a self, pool: &'a PgPool) -> BoxFuture<'a, Result<()>>;
fn enabled_by_default(&self) -> bool {
false
}
}
pub mod util;
#[inline]
#[allow(clippy::cast_precision_loss)]
const fn i64_to_f64(value: i64) -> f64 {
value as f64
}
register_collectors! {
default => DefaultCollector,
vacuum => VacuumCollector,
activity => ActivityCollector,
locks => LocksCollector,
database => DatabaseCollector,
stat => StatCollector,
replication => ReplicationCollector,
index => IndexCollector,
statements => StatementsCollector,
exporter => ExporterCollector,
tls => TlsCollector,
}
pub mod config;
pub mod registry;