add few dbs

This commit is contained in:
2021-08-18 03:56:12 -05:00
parent 1d808a59b2
commit 141bd42fb4
4 changed files with 163 additions and 12 deletions

View File

@@ -1,3 +1,108 @@
fn main() {
println!("Hello, world!");
use log::info;
use sqlx::{
mysql::MySqlPoolOptions,
postgres::PgPoolOptions,
};
fn setup_logger() -> Result<(), fern::InitError> {
fern::Dispatch::new()
.format(|out, message, record| {
out.finish(format_args!(
"{}[{}][{}] {}",
chrono::Local::now().format("[%Y-%m-%d][%H:%M:%S]"),
record.target(),
record.level(),
message
))
})
.level(log::LevelFilter::Debug)
.chain(std::io::stdout())
.chain(fern::log_file("output.log")?)
.apply()?;
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_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> {
// Create a connection pool
// for MySQL, use MySqlPoolOptions::new()
// for SQLite, use SqlitePoolOptions::new()
// etc.
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_std::main]
#[tokio::main]
async fn main() -> Result<(), sqlx::Error> {
setup_logger().unwrap();
let ts = vec![
tokio::spawn(async move {
check_postgres().await.unwrap();
}),
tokio::spawn(async move {
check_mysql().await.unwrap();
}),
// tokio::spawn(async move {
// check_postgres().await.unwrap();
// }),
tokio::spawn(async move {
check_maria_db().await.unwrap();
}),
];
info!("---- Spawned all ----");
for t in ts {
t.await.unwrap();
}
Ok(())
}