41 lines
843 B
Rust
41 lines
843 B
Rust
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<redis::Client>,
|
|
}
|
|
|
|
#[derive(Debug, Clone)]
|
|
struct Controllers {
|
|
user: UserController,
|
|
}
|
|
|
|
pub(crate) async fn run(
|
|
conn: MiddlewareConnections,
|
|
opts: Opts,
|
|
) -> Result<(), Box<dyn std::error::Error>> {
|
|
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)
|
|
}
|