1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
use config::{Config, File};
use serde::Deserialize;
use crate::{db::DatabaseSettings, FetchingSettings, IndexerSettings, IndexingResult};
#[derive(Deserialize, Clone)]
pub struct Configuration {
pub indexer_settings: IndexerSettings,
pub db_settings: DatabaseSettings,
pub fetcher_settings: Option<FetchingSettings>,
}
pub fn get_configuration<'de, T: Deserialize<'de>>() -> IndexingResult<T> {
let config = std::env::var("INDEXER_CFG").unwrap_or_else(|_| "configuration.yaml".to_string());
let builder = Config::builder()
.add_source(File::with_name(&config).required(true))
.build()?;
builder.try_deserialize::<T>().map_err(Into::into)
}