35 lines
1.0 KiB
Rust
35 lines
1.0 KiB
Rust
use std::net::TcpListener;
|
|
|
|
use email_newsletter_api::telemetry::{get_subscriber, init_subscriber};
|
|
use email_newsletter_api::{configuration::get_configuration, startup};
|
|
use sqlx::postgres::PgPoolOptions;
|
|
|
|
#[tokio::main]
|
|
async fn main() -> Result<(), std::io::Error> {
|
|
let configuration = get_configuration().expect("Failed to read configuration");
|
|
|
|
let subscriber = get_subscriber(
|
|
"email_newsletter_api".into(),
|
|
"info".into(),
|
|
std::io::stdout,
|
|
);
|
|
init_subscriber(subscriber);
|
|
|
|
let db_conn = PgPoolOptions::new().connect_lazy_with(configuration.database.with_db());
|
|
|
|
let listener = TcpListener::bind(format!(
|
|
"{}:{}",
|
|
configuration.application.host, configuration.application.port
|
|
))
|
|
.unwrap_or_else(|_| {
|
|
panic!(
|
|
"Can't bind to port {} at localhost",
|
|
configuration.application.port
|
|
)
|
|
});
|
|
|
|
// Move the error up the call stack
|
|
// otherwise await for the HttpServer
|
|
startup::run(listener, db_conn)?.await
|
|
}
|