cronback_lib/database/
mod.rs1pub 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}