1
0
mirror of https://gitlab.com/comunic/comunicapiv3 synced 2024-11-26 07:19:22 +00:00

Add connection to the database

This commit is contained in:
Pierre HUBERT 2020-05-21 09:21:58 +02:00
parent 5766ebcbde
commit bc91caeba4
6 changed files with 1041 additions and 3 deletions

1003
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -8,3 +8,6 @@ edition = "2018"
[dependencies]
yaml-rust = "0.4.3"
mysql = "18.2.0"

28
src/helpers/database.rs Normal file
View File

@ -0,0 +1,28 @@
use std::error::Error;
use std::sync::{Mutex, Arc};
use crate::data::config::DatabaseConfig;
use mysql::Pool;
/// Database access helper
///
/// @author Pierre Hubert
// Pool shared across threads
static mut POOL: Option<Arc<Mutex<mysql::Pool>>> = None;
/// Connect to the database
pub fn connect(conf: &DatabaseConfig) -> Result<(), Box<dyn Error>> {
let url = format!(
"mysql://{}:{}@{}:3306/{}",
conf.username, conf.password, conf.host, conf.name
);
let pool = Pool::new(url)?;
let pool = Some(Arc::new(Mutex::new(pool)));
unsafe {
POOL = pool;
}
Ok(())
}

1
src/helpers/mod.rs Normal file
View File

@ -0,0 +1 @@
pub mod database;

View File

@ -1 +1,2 @@
pub mod data;
pub mod helpers;

View File

@ -1,11 +1,13 @@
use comunic_server::data::config::{conf, Config};
use comunic_server::helpers::database;
fn main() {
// Load configuration
Config::load("config.yaml").expect("Could not load configuration!");
println!("{:#?}", conf());
// Connect to the database
database::connect(&conf().database).expect("Could not connect to database!");
println!("Hello, world!");
}