cronback_lib/database/
mod.rs

1pub mod attempt_log_store;
2mod errors;
3pub mod models;
4pub mod pagination;
5pub mod run_store;
6
7pub use errors::DatabaseError;
8use migration::{Migrator, MigratorTrait};
9use sea_orm::TransactionTrait;
10
11#[derive(Clone)]
12pub struct Database {
13    pub orm: sea_orm::DatabaseConnection,
14}
15
16impl Database {
17    pub async fn connect(conn_string: &str) -> Result<Self, sea_orm::DbErr> {
18        Ok(Self {
19            orm: sea_orm::Database::connect(conn_string).await?,
20        })
21    }
22
23    pub async fn in_memory() -> Result<Self, sea_orm::DbErr> {
24        let conn = Self::connect("sqlite::memory:").await?;
25        conn.migrate().await?;
26        Ok(conn)
27    }
28
29    pub async fn migrate(&self) -> Result<(), sea_orm::DbErr> {
30        let conn = self.orm.begin().await?;
31        Migrator::up(&conn, None).await?;
32        conn.commit().await?;
33        Ok(())
34    }
35}