use crate::start;
use actix_web::web::{scope, ServiceConfig};
use sea_orm::DatabaseConnection;
use tracing::error;
#[derive(Clone)]
pub struct AppState {
pub database: DatabaseConnection,
pub redis: fred::prelude::RedisPool,
}
fn api_init(web_app: &mut ServiceConfig) {
web_app.service(scope("/api/v1/webhttp"));
}
pub fn server_main() -> anyhow::Result<()> {
let name: String = "webhttp".into();
let app_name = name.clone();
let sys = actix_rt::System::with_tokio_rt(|| {
let runtime = tokio::runtime::Builder::new_multi_thread()
.worker_threads(2)
.thread_name(name.clone().as_str())
.enable_all()
.global_queue_interval(31)
.build()
.unwrap();
runtime
});
sys.block_on(async move {
let http_port: u16 = 5010;
let status = start(
name.clone(),
http_port,
None,
None,
Some(format!("/api/{}/websocket", name)),
Some(3),
api_init,
Some(2),
None,
None,
None,
None,
None,
)
.await;
if status.is_err() {
error!("start service with error: {:?}", status.err());
}
});
println!("server {} has been exited", app_name);
std::process::exit(0);
}