pub mod connection;
pub mod migrations;
pub mod sqlx;
pub use self::sqlx::Database;
pub use connection::connect;
pub use connection::connect_eager;
pub use migrations::Migrator;
#[cfg(test)]
mod tests {
use super::*;
use crate::config::DatabaseConfig;
#[tokio::test]
async fn test_connect_lazy_valid_url() {
let config = DatabaseConfig {
url: "postgres://user:pw@localhost:9999/db".to_string(),
max_connections: 5,
connect_timeout: 5,
};
assert!(connect(&config).is_ok());
}
#[tokio::test]
async fn test_connect_bad_url_is_database_error() {
let config = DatabaseConfig {
url: "not-a-valid-postgres-url".to_string(),
max_connections: 5,
connect_timeout: 5,
};
let err = connect(&config).unwrap_err();
match err {
crate::error::ServiceError::Database(_) => {}
other => panic!("expected ServiceError::Database, got {other:?}"),
}
}
}