This commit is contained in:
2026-05-03 16:24:47 +02:00
commit 47c33a3a6c
35 changed files with 7288 additions and 0 deletions
+34
View File
@@ -0,0 +1,34 @@
use std::time::Duration;
use sea_orm::{ConnectOptions, Database as SeaDatabase, DatabaseConnection, DbErr};
use migration::{Migrator, MigratorTrait};
#[derive(Clone)]
pub struct Database {
pub connection: DatabaseConnection,
}
impl Database {
pub async fn init(dsn: &str) -> Result<Self, DbErr> {
let mut opt = ConnectOptions::new(dsn);
opt.max_connections(100)
.min_connections(5)
.connect_timeout(Duration::from_secs(8))
.acquire_timeout(Duration::from_secs(8))
.sqlx_logging(true)
.sqlx_logging_level(log::LevelFilter::Debug);
let connection = SeaDatabase::connect(opt).await?;
// On lance les migrations ici.
// Si ça échoue, le programme s'arrête proprement à l'init.
Migrator::up(&connection, None).await?;
Ok(Self { connection })
}
// Tu peux ajouter ici tes méthodes helpers si tu veux encapsuler SeaORM
// ex: pub async fn find_user(...)
pub fn get_connection(&self) -> &DatabaseConnection {
&self.connection
}
}