You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.3 KiB
56 lines
1.3 KiB
mod auth; |
|
mod cases; |
|
mod collections; |
|
mod entities; |
|
|
|
use std::sync::Arc; |
|
|
|
use axum::routing::get; |
|
use axum::routing::Router; |
|
use clap::Parser; |
|
use dotenv::dotenv; |
|
use mongodb::options::ClientOptions; |
|
use mongodb::Client; |
|
|
|
use crate::entities::Params; |
|
use crate::entities::State; |
|
|
|
#[tokio::main] |
|
async fn main() { |
|
dotenv().ok(); |
|
tracing_subscriber::fmt::init(); |
|
|
|
let args = Params::parse(); |
|
|
|
tracing::debug!("Connecting to mongo..."); |
|
let mongo_options = ClientOptions::parse(&args.mongo_addr).await.unwrap(); |
|
let client = Client::with_options(mongo_options).unwrap(); |
|
let db = client.database("helyxTestDatabase"); |
|
|
|
let state = Arc::new(State { db }); |
|
|
|
let app = Router::new() |
|
.route("/", get(index)) |
|
.merge(collections::router( |
|
state.clone(), |
|
args.ci_usr.clone(), |
|
args.ci_pwd.clone(), |
|
args.ci_role.clone(), |
|
)) |
|
.merge(cases::router( |
|
state.clone(), |
|
args.ci_usr.clone(), |
|
args.ci_pwd.clone(), |
|
args.ci_role.clone(), |
|
)); |
|
|
|
tracing::info!(args.addr, "Server listening in"); |
|
axum::Server::bind(&args.addr.parse().unwrap()) |
|
.serve(app.into_make_service()) |
|
.await |
|
.unwrap(); |
|
} |
|
|
|
async fn index() -> String { |
|
format!("Hellow") |
|
}
|
|
|