use actix_web::{App, HttpServer}; use sea_orm::DatabaseConnection; use crate::Opts; use self::controller::UserController; mod urls; mod controller; mod model; mod view; #[derive(Debug, Clone)] pub struct MiddlewareConnections { pub database: DatabaseConnection, pub redis: Option, } #[derive(Debug, Clone)] struct Controllers { user: UserController, } pub(crate) async fn run( conn: MiddlewareConnections, opts: Opts, ) -> Result<(), Box> { let data = actix_web::web::Data::new(Controllers { user: UserController::new(conn.database.clone()), }); let server = HttpServer::new(move || App::new().configure(urls::configure).app_data(data.clone())) .bind((opts.address, opts.port))?; let result = server.run().await?; Ok(result) }