use crate::backend::backend::build_api; use neo4rs::Graph; use rocket::Config; use rocket_okapi::swagger_ui::{make_swagger_ui, SwaggerUIConfig}; mod backend; mod graph; fn main() { let tokio = tokio::runtime::Runtime::new().expect("Failed to spawn tokio runtime"); tokio.block_on(async move { let uri: String = "127.0.0.1:7687".to_string(); let user = ""; let pass = ""; // connect to neo4j database let graph = Graph::new(uri, user, pass).await.unwrap(); // configure api port and interface let config = Config { address: "0.0.0.0".parse().unwrap(), port: 8081, ..Default::default() }; // configure api and swagger ui let rock = rocket::custom(config) .manage(graph) .mount("/api/", build_api()) .mount( "/docs/", make_swagger_ui(&SwaggerUIConfig { url: "../api/openapi.json".to_owned(), ..Default::default() }), ); let rock = rock.launch().await; match rock { Ok(_) => println!("Rocket shut down gracefully."), Err(err) => println!("Rocket had an error: {}", err), }; }); }