buckets_core/database/
mod.rs

1mod sql;
2mod uploads;
3
4use crate::config::Config;
5use crate::model::result::*;
6use oiseau::{execute, postgres::DataManager as OiseauManager, postgres::Result as PgResult};
7
8#[derive(Clone)]
9pub struct DataManager(pub OiseauManager<Config>);
10
11impl DataManager {
12    /// Create a new [`DataManager`].
13    pub async fn new(config: Config) -> PgResult<Self> {
14        Ok(Self(OiseauManager::new(config).await?))
15    }
16
17    /// Initialize tables.
18    pub async fn init(&self) -> Result<()> {
19        let conn = match self.0.connect().await {
20            Ok(c) => c,
21            Err(e) => return Err(Error::DatabaseConnection(e.to_string())),
22        };
23
24        execute!(&conn, sql::CREATE_TABLE_UPLOADS).unwrap();
25
26        Ok(())
27    }
28}