Skip to main content

tetratto_core/database/drivers/
mod.rs

1pub mod common;
2
3use std::collections::HashMap;
4use tetratto_l10n::{read_langs, LangFile};
5use oiseau::postgres::{DataManager as OiseauManager, Result};
6use crate::config::Config;
7use buckets_core::{DataManager as BucketsManager, Config as BucketsConfig};
8
9#[derive(Clone)]
10pub struct DataManager(
11    pub OiseauManager<Config>,
12    pub HashMap<String, LangFile>,
13    pub BucketsManager,
14);
15
16impl DataManager {
17    /// Create a new [`DataManager`].
18    pub async fn new(config: Config) -> Result<Self> {
19        let buckets_manager = BucketsManager::new(BucketsConfig {
20            directory: format!("{}/{}", config.dirs.media, "uploads"),
21            bucket_defaults: HashMap::new(),
22            database: config.database.clone(),
23            banned_hosts: config.banned_hosts.clone(),
24        })
25        .await
26        .expect("failed to create buckets manager");
27
28        Ok(Self(
29            OiseauManager::new(config).await?,
30            read_langs(),
31            buckets_manager,
32        ))
33    }
34}