tetratto-core 17.0.0

The core behind Tetratto
Documentation
pub mod common;

use std::collections::HashMap;
use tetratto_l10n::{read_langs, LangFile};
use oiseau::postgres::{DataManager as OiseauManager, Result};
use crate::config::Config;
use buckets_core::{DataManager as BucketsManager, Config as BucketsConfig};

#[derive(Clone)]
pub struct DataManager(
    pub OiseauManager<Config>,
    pub HashMap<String, LangFile>,
    pub BucketsManager,
);

impl DataManager {
    /// Create a new [`DataManager`].
    pub async fn new(config: Config) -> Result<Self> {
        let buckets_manager = BucketsManager::new(BucketsConfig {
            directory: format!("{}/{}", config.dirs.media, "uploads"),
            bucket_defaults: HashMap::new(),
            database: config.database.clone(),
        })
        .await
        .expect("failed to create buckets manager");

        Ok(Self(
            OiseauManager::new(config).await?,
            read_langs(),
            buckets_manager,
        ))
    }
}