Constant DB
Source pub const DB: &str = r#"use dotenvy::dotenv;
use mongodb::{Client, options::ClientOptions};
use rocket::fairing::AdHoc;
use std::sync::Arc;
use crate::repositories::UserRepository;
pub fn init() -> AdHoc {
AdHoc::on_ignite(
"Establish connection with Database cluster",
|rocket| async {
match connect().await {
Ok(user_repository) => rocket.manage(user_repository),
Err(error) => {
panic!("Cannot connect to instance -> {:?}", error)
}
}
},
)
}
async fn connect() -> mongodb::error::Result<Arc<UserRepository>> {
dotenv().ok();
let database_url = std::env::var("DATABASE_URL").expect("DATABASE_URL must be set...");
let database_name = std::env::var("DATABASE").expect("DATABASE must be set...");
let client_options = ClientOptions::parse(database_url).await?;
let client = Client::with_options(client_options)?;
let _database = client.database(&database_name);
Ok(Arc::new(UserRepository::new(
&client,
&database_name,
"users",
)))
}
"#;