I am quite new to Rust and I want to understand some concepts. How could I create a global connection here that I can further use in my services? This is my structure
/src
/v3
/routes/
/config/
/entities/
/services/
main.rs
And I would like to open the connection manually and be able to access it in services, for example, or where I will manipulate the database
use std::sync::Arc;
use axum::Router;
use once_cell::sync::Lazy;
use sea_orm::{Database, DatabaseConnection};
use tokio::net::TcpListener;
use crate::v3::config::env;
mod v3;
#[tokio::main]
async fn main() {
// Init env
env::init();
let host: String = format!("0.0.0.0:{}", env::get_env("PORT"));
let app: Router = v3::create_v3_router();
let listener: TcpListener = tokio::net::TcpListener::bind(&host).await.unwrap();
println!("Server running on {}", host);
axum::serve(listener, app).await.unwrap();
}
mod.rs
pub fn create_v3_router() -> Router {
Router::new()
.merge(session_routes())
}
routes/session.rs
pub fn routes() -> Router {
let router: Router = Router::new()
.route("/api/v3/session", get(example_handler));
return router
}
See axum state.
db.rs
main.rs