firefish/packages/backend-rs/src/database/mod.rs

27 lines
649 B
Rust
Raw Normal View History

2023-05-25 12:55:20 +00:00
pub mod error;
2023-06-02 12:48:12 +00:00
use error::Error;
2023-05-31 22:12:59 +00:00
use sea_orm::{Database, DbConn};
2023-05-25 12:55:20 +00:00
2023-05-31 22:12:59 +00:00
static DB_CONN: once_cell::sync::OnceCell<DbConn> = once_cell::sync::OnceCell::new();
2023-06-02 15:55:14 +00:00
pub async fn init_database(conn_uri: impl Into<String>) -> Result<(), Error> {
let conn = Database::connect(conn_uri.into()).await?;
2023-05-25 12:55:20 +00:00
DB_CONN.get_or_init(move || conn);
Ok(())
}
2023-05-31 22:12:59 +00:00
pub fn get_database() -> Result<&'static DbConn, Error> {
DB_CONN.get().ok_or(Error::Uninitialized)
2023-05-25 13:42:59 +00:00
}
#[cfg(test)]
2023-05-27 10:52:15 +00:00
mod unit_test {
2023-06-02 12:48:12 +00:00
use super::{error::Error, get_database};
2023-05-25 13:42:59 +00:00
#[test]
2023-05-27 10:52:15 +00:00
fn error_uninitialized() {
assert_eq!(get_database().unwrap_err(), Error::Uninitialized);
}
2023-05-25 12:55:20 +00:00
}