Files
imphnen-backend-service/imphnen-libs/src/axum/mod.rs
T

29 lines
856 B
Rust
Raw Normal View History

use crate::{surrealdb_init_mem, surrealdb_init_ws};
2025-05-20 10:45:01 +07:00
use axum::{Router, serve};
use imphnen_entities::{SurrealMemClient, SurrealWsClient};
2025-02-07 22:26:32 +07:00
use std::{future::Future, net::SocketAddr};
use tokio::net::TcpListener;
use crate::enviroment::ENV;
2025-02-07 22:26:32 +07:00
pub async fn axum_init<F, Fut>(router_fn: F)
where
2025-03-21 17:00:19 +07:00
F: FnOnce(SurrealWsClient, SurrealMemClient) -> Fut,
2025-02-16 01:09:55 +07:00
Fut: Future<Output = Router>,
2025-02-07 22:26:32 +07:00
{
let env = &ENV;
2025-05-20 10:45:01 +07:00
2025-03-21 17:00:19 +07:00
let surrealdb_ws = surrealdb_init_ws().await.expect("Failed surrealdb ws");
2025-05-20 10:45:01 +07:00
2025-03-21 17:00:19 +07:00
let surrealdb_mem = surrealdb_init_mem().await.expect("Failed surrealdb mem");
2025-05-20 10:45:01 +07:00
2025-03-21 17:00:19 +07:00
let router = router_fn(surrealdb_ws, surrealdb_mem).await;
2025-05-20 10:45:01 +07:00
2025-03-13 23:40:16 +07:00
let port = env.port;
let addr = SocketAddr::from(([0, 0, 0, 0], port));
2025-02-16 01:09:55 +07:00
let listener = TcpListener::bind(&addr).await.unwrap();
2025-05-20 10:45:01 +07:00
if let Err(err) = serve(listener, router).await {
log::error!("Server failed to start: {}", err);
}
2025-02-07 22:26:32 +07:00
}