zero-to-production/src/startup.rs

29 lines
842 B
Rust
Raw Normal View History

2021-01-11 10:01:48 +00:00
use crate::email_client::EmailClient;
use crate::routes::{health_check, subscribe};
use actix_web::dev::Server;
use actix_web::web::Data;
use actix_web::{web, App, HttpServer};
use sqlx::PgPool;
use std::net::TcpListener;
use tracing_actix_web::TracingLogger;
2021-01-11 10:01:48 +00:00
pub fn run(
listener: TcpListener,
db_pool: PgPool,
email_client: EmailClient,
) -> Result<Server, std::io::Error> {
let db_pool = Data::new(db_pool);
2021-01-11 10:01:48 +00:00
let email_client = Data::new(email_client);
let server = HttpServer::new(move || {
App::new()
.wrap(TracingLogger)
.route("/health_check", web::get().to(health_check))
.route("/subscriptions", web::post().to(subscribe))
.app_data(db_pool.clone())
2021-01-11 10:01:48 +00:00
.app_data(email_client.clone())
})
.listen(listener)?
.run();
Ok(server)
}