46 lines
1.1 KiB
Rust
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;
|
|
}
|