debt-pirate/api/src/main.rs

40 lines
926 B
Rust

use std::{process, sync::mpsc::channel};
use models::Environment;
mod db;
mod error;
mod models;
mod requests;
mod services;
use db::{create_connection_pool, run_migrations};
use requests::start_app;
use services::{start_emailer_service, UserConfirmationMessage};
use tokio::runtime::Handle;
#[tokio::main]
async fn main() {
let (tx, rx) = channel::<UserConfirmationMessage>();
let env = match Environment::init(tx) {
Ok(env) => env,
Err(err) => {
eprintln!("{err}");
process::exit(1);
}
};
let pool = create_connection_pool(env.db_connection_uri()).await;
if let Err(err) = run_migrations(&pool).await {
eprintln!("{err:?}");
process::exit(2);
}
start_emailer_service(Handle::current(), env.assets_dir(), rx);
if let Err(err) = start_app(pool, env).await {
eprintln!("{err:?}");
process::exit(3);
}
}