use crate::configs::{ServerConfig, routes_config};
use crate::handlers::page_not_found;
use crate::models::AppState;
use crate::utils::init_check_env;
use actix_web::{App, HttpServer, dev::Server, web};
#[derive(Clone, Default)]
pub struct Pipey;
impl Pipey {
pub async fn run_server() -> Result<Server, std::io::Error> {
dotenvy::dotenv().ok();
init_check_env();
let redis_url = std::env::var("REDIS_URL").expect("Missing env variable REDIS_URL");
let server_cfg = ServerConfig::from_env();
let app_state = web::Data::new(AppState::new("node_1", &redis_url).await);
let server = HttpServer::new(move || {
App::new()
.app_data(app_state.clone())
.configure(routes_config)
.default_service(web::route().to(page_not_found))
})
.bind((server_cfg.host, server_cfg.port))?
.run();
println!("Server running at http://127.0.0.1:8080/api/v001/");
Ok(server)
}
}