diff --git a/src/check_maria_db.rs b/src/check_maria_db.rs new file mode 100644 index 0000000..b5f61ef --- /dev/null +++ b/src/check_maria_db.rs @@ -0,0 +1,19 @@ +use log::info; + +use sqlx::mysql::MySqlPoolOptions; + +pub async fn check_maria_db() -> Result<(), sqlx::Error> { + let pool = MySqlPoolOptions::new() + .max_connections(5) + .connect("mysql://demo_user:demo_pass@localhost:8084/demo") + .await?; + + // Make a simple query to return the given parameter + let row = sqlx::query("SELECT * from events") + .fetch_all(&pool) + .await?; + + info!("Received {:?}", row); + + Ok(()) +} diff --git a/src/check_ms_sql.rs b/src/check_ms_sql.rs new file mode 100644 index 0000000..9542755 --- /dev/null +++ b/src/check_ms_sql.rs @@ -0,0 +1,27 @@ +use log::info; + +use sqlx::mssql::{ + MssqlConnectOptions, + MssqlPool, +}; + +pub async fn check_ms_sql() -> Result<(), sqlx::Error> { + // "mssql://sa:'adm1n_pa%s'@localhost:8085/demo" + let options = MssqlConnectOptions::new() + .host("localhost") + .port(8085) + .database("demo") + .username("demo_user") + .password("pas$w0rd"); + + let pool = MssqlPool::connect_with(options).await?; + + // Make a simple query to return the given parameter + let _row = sqlx::query("SELECT * from Products") + .fetch_all(&pool) + .await?; + + info!("Received ok!"); + + Ok(()) +} diff --git a/src/check_mysql.rs b/src/check_mysql.rs new file mode 100644 index 0000000..7d288a1 --- /dev/null +++ b/src/check_mysql.rs @@ -0,0 +1,19 @@ +use log::info; + +use sqlx::mysql::MySqlPoolOptions; + +pub async fn check_mysql() -> Result<(), sqlx::Error> { + let pool = MySqlPoolOptions::new() + .max_connections(5) + .connect("mysql://demo_user:demo_pass@localhost:8086/demo") + .await?; + + // Make a simple query to return the given parameter + let row = sqlx::query("SELECT * from events") + .fetch_all(&pool) + .await?; + + info!("Received {:?}", row); + + Ok(()) +} diff --git a/src/check_postgres.rs b/src/check_postgres.rs new file mode 100644 index 0000000..3d52445 --- /dev/null +++ b/src/check_postgres.rs @@ -0,0 +1,22 @@ +use log::info; + +use sqlx::postgres::PgPoolOptions; + +pub async fn check_postgres() -> Result<(), sqlx::Error> { + let pool = PgPoolOptions::new() + .max_connections(5) + .connect("postgres://demo_user:demo_pass@localhost:8087/demo") + .await?; + + // Make a simple query to return the given parameter + let row: (i64,) = sqlx::query_as("SELECT $1") + .bind(150_i64) + .fetch_one(&pool) + .await?; + + assert_eq!(row.0, 150); + + info!("Received {}", row.0); + + Ok(()) +} diff --git a/src/check_sqlite.rs b/src/check_sqlite.rs new file mode 100644 index 0000000..f57d5a2 --- /dev/null +++ b/src/check_sqlite.rs @@ -0,0 +1,26 @@ +use log::info; + +use sqlx::sqlite::SqlitePoolOptions; + +pub async fn check_sqlite() -> Result<(), sqlx::Error> { + // Create a connection pool + // for MySQL, use MySqlPoolOptions::new() + // for SQLite, use SqlitePoolOptions::new() + // etc. + let pool = SqlitePoolOptions::new() + .max_connections(5) + .connect("sqlite://test.db") + .await?; + + // Make a simple query to return the given parameter + let row: (i64,) = sqlx::query_as("SELECT $1") + .bind(150_i64) + .fetch_one(&pool) + .await?; + + assert_eq!(row.0, 150); + + info!("Received {}", row.0); + + Ok(()) +} diff --git a/src/main.rs b/src/main.rs index db467cf..bb41d9e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,10 +1,16 @@ use log::info; -use sqlx::{ - mysql::MySqlPoolOptions, - postgres::PgPoolOptions, - sqlite::SqlitePoolOptions, -}; +use check_maria_db::check_maria_db; +use check_ms_sql::check_ms_sql; +use check_mysql::check_mysql; +use check_postgres::check_postgres; +use check_sqlite::check_sqlite; + +mod check_maria_db; +mod check_ms_sql; +mod check_mysql; +mod check_postgres; +mod check_sqlite; fn setup_logger() -> Result<(), fern::InitError> { fern::Dispatch::new() @@ -24,96 +30,6 @@ fn setup_logger() -> Result<(), fern::InitError> { Ok(()) } -async fn check_maria_db() -> Result<(), sqlx::Error> { - let pool = MySqlPoolOptions::new() - .max_connections(5) - .connect("mysql://demo_user:demo_pass@localhost:8084/demo") - .await?; - - // Make a simple query to return the given parameter - let row = sqlx::query("SELECT * from events") - .fetch_all(&pool) - .await?; - - info!("Received {:?}", row); - - Ok(()) -} - -// async fn check_ms_sql() -> Result<(), sqlx::Error> { -// let pool = MySqlPoolOptions::new() -// .max_connections(5) -// .connect("mssql://sa:'adm1n_pa%s'@localhost:8085/demo") -// .await?; - -// // Make a simple query to return the given parameter -// let row = sqlx::query("SELECT * from events") -// .fetch_all(&pool) -// .await?; - -// info!("Received {:?}", row); - -// Ok(()) -// } - -async fn check_mysql() -> Result<(), sqlx::Error> { - let pool = MySqlPoolOptions::new() - .max_connections(5) - .connect("mysql://demo_user:demo_pass@localhost:8086/demo") - .await?; - - // Make a simple query to return the given parameter - let row = sqlx::query("SELECT * from events") - .fetch_all(&pool) - .await?; - - info!("Received {:?}", row); - - Ok(()) -} - -async fn check_postgres() -> Result<(), sqlx::Error> { - let pool = PgPoolOptions::new() - .max_connections(5) - .connect("postgres://demo_user:demo_pass@localhost:8087/demo") - .await?; - - // Make a simple query to return the given parameter - let row: (i64,) = sqlx::query_as("SELECT $1") - .bind(150_i64) - .fetch_one(&pool) - .await?; - - assert_eq!(row.0, 150); - - info!("Received {}", row.0); - - Ok(()) -} - -async fn check_sqlite() -> Result<(), sqlx::Error> { - // Create a connection pool - // for MySQL, use MySqlPoolOptions::new() - // for SQLite, use SqlitePoolOptions::new() - // etc. - let pool = SqlitePoolOptions::new() - .max_connections(5) - .connect("sqlite://test.db") - .await?; - - // Make a simple query to return the given parameter - let row: (i64,) = sqlx::query_as("SELECT $1") - .bind(150_i64) - .fetch_one(&pool) - .await?; - - assert_eq!(row.0, 150); - - info!("Received {}", row.0); - - Ok(()) -} - //#[async_std::main] #[tokio::main] async fn main() -> Result<(), sqlx::Error> { @@ -126,9 +42,9 @@ async fn main() -> Result<(), sqlx::Error> { tokio::spawn(async move { check_mysql().await.unwrap(); }), - // tokio::spawn(async move { - // check_ms_sql().await.unwrap(); - // }), + tokio::spawn(async move { + check_ms_sql().await.unwrap(); + }), tokio::spawn(async move { check_maria_db().await.unwrap(); }),