use mongodb::{ Client, Collection, Database };
use std::env;

use once_cell::sync::OnceCell;
static DBCONN: OnceCell<Client> = OnceCell::new();

pub fn connect() {
	let client = Client::with_uri_str(
			&env::var("DB_URI").expect("DB_URI not in environment variables!"))
		.expect("Failed to init db connection.");

	DBCONN.set(client).unwrap();
}

pub fn get_connection() -> &'static Client {
	DBCONN.get().unwrap()
}

pub fn get_db() -> Database {
	get_connection().database("revolt")
}

pub fn get_collection(collection: &str) -> Collection {
	get_db().collection(collection)
}

pub mod user;
pub mod channel;
pub mod message;