caveman/gatherer/src/main.rs

46 lines
1.1 KiB
Rust

use std::time::Duration;
use metrics_util::MetricKindMask;
use metrics_exporter_prometheus::PrometheusBuilder;
use cave::{
config::LoadConfig,
firehose::FirehoseFactory,
};
mod config;
mod trends;
mod html_template;
mod http_server;
mod oauth;
#[tokio::main]
async fn main() {
cave::init::exit_on_panic();
cave::init::init_logger(5556);
let config = config::Config::load();
let recorder = PrometheusBuilder::new()
.add_global_label("application", env!("CARGO_PKG_NAME"))
.idle_timeout(MetricKindMask::ALL, Some(Duration::from_secs(600)))
.install_recorder()
.unwrap();
cave::systemd::status("Connecting to database");
let db = cave::db::Database::connect(&config.database).await;
cave::systemd::status("Starting redis client");
let store = cave::store::Store::new(8, config.redis.clone()).await;
let firehose_factory = FirehoseFactory::new(config.redis);
let http = http_server::start(
config.listen_port,
store,
db,
firehose_factory,
recorder,
);
cave::systemd::ready();
http.await;
}