add: model

This commit is contained in:
trisua 2025-08-23 22:07:14 -04:00
parent f70b92c558
commit d7ee379a9a
13 changed files with 394 additions and 219 deletions

View file

@ -1,18 +1,28 @@
mod chats;
mod messages;
mod sql;
use crate::config::Config;
use buckets_core::{Config as BucketsConfig, DataManager as BucketsManager};
use oiseau::{execute, postgres::DataManager as OiseauManager, postgres::Result as PgResult};
use std::collections::HashMap;
use tetratto_core::model::{Error, Result};
pub const NAME_REGEX: &str = r"[^\w_\-\.,!]+";
#[derive(Clone)]
pub struct DataManager(pub OiseauManager<Config>);
pub struct DataManager(pub OiseauManager<Config>, pub BucketsManager);
impl DataManager {
/// Create a new [`DataManager`].
pub async fn new(config: Config) -> PgResult<Self> {
Ok(Self(OiseauManager::new(config).await?))
let buckets_manager = BucketsManager::new(BucketsConfig {
directory: config.uploads_dir.clone(),
bucket_defaults: HashMap::new(),
database: config.database.clone(),
})
.await
.expect("failed to create buckets manager");
Ok(Self(OiseauManager::new(config).await?, buckets_manager))
}
/// Initialize tables.
@ -22,7 +32,8 @@ impl DataManager {
Err(e) => return Err(Error::DatabaseConnection(e.to_string())),
};
// execute!(&conn, sql::CREATE_TABLE_ENTRIES).unwrap();
execute!(&conn, sql::CREATE_TABLE_CHATS).unwrap();
execute!(&conn, sql::CREATE_TABLE_MESSAGES).unwrap();
Ok(())
}