controller/src/main.rs

57 lines
1.6 KiB
Rust
Raw Normal View History

2022-07-17 18:19:36 +00:00
extern crate dotenv;
2021-11-04 22:37:16 +00:00
2023-11-21 13:58:01 +00:00
use std::str::FromStr;
2023-11-19 17:54:27 +00:00
use actix_web::middleware::TrailingSlash;
2022-07-17 18:19:36 +00:00
use actix_web::{middleware, web, App, HttpServer};
2023-11-19 17:54:27 +00:00
use log::{trace, LevelFilter};
use simple_logger::SimpleLogger;
2021-11-05 15:32:30 +00:00
mod db;
mod handlers;
2022-04-02 23:35:51 +00:00
mod return_models;
2023-11-19 17:54:27 +00:00
mod settings;
2021-11-05 15:32:30 +00:00
mod types;
2022-07-17 18:19:36 +00:00
mod utils;
2021-11-04 22:37:16 +00:00
#[actix_web::main]
async fn main() -> std::io::Result<()> {
2023-11-19 17:54:27 +00:00
settings::init();
let settings = settings::get();
2021-11-04 22:37:16 +00:00
2023-11-19 17:54:27 +00:00
let log_level: LevelFilter = log::LevelFilter::from_str(&settings.logging.level)
.unwrap_or_else(|_| panic!("Error parsing log level."));
trace!("Log level set to {:?}", log_level);
2021-11-06 13:54:45 +00:00
2023-11-19 17:54:27 +00:00
SimpleLogger::new()
.with_level(log_level)
.init()
.unwrap_or_else(|_| panic!("Error initializing logger."));
2022-04-15 00:11:34 +00:00
2023-11-20 23:44:45 +00:00
let pool = db::init(&settings.database).await;
2022-04-15 00:11:34 +00:00
2023-11-20 23:44:45 +00:00
HttpServer::new(move || {
2022-07-19 22:38:09 +00:00
App::new()
.wrap(
middleware::DefaultHeaders::new()
2023-11-19 17:54:27 +00:00
.add(("Access-Control-Allow-Origin", "*"))
.add(("Access-Control-Allow-Headers", "*"))
.add(("Access-Control-Allow-Methods", "*")),
2022-07-19 22:38:09 +00:00
)
.wrap(middleware::Logger::default())
.wrap(middleware::NormalizePath::new(TrailingSlash::Trim))
.app_data(web::JsonConfig::default().error_handler(handlers::json_error_handler))
2023-11-20 23:44:45 +00:00
.app_data(web::Data::new(pool.clone()))
2022-07-19 22:38:09 +00:00
.service(handlers::v1::schedules::index)
.service(handlers::v1::schedules::tagged)
.service(handlers::v1::schedules::show)
.service(handlers::v1::schedules::add)
.service(handlers::v1::schedules::add_list)
.service(handlers::v1::schedules::update)
.service(handlers::v1::schedules::delete)
})
2023-11-19 17:54:27 +00:00
.bind(format!("{}:{}", settings.host, settings.port))?
2022-07-19 22:38:09 +00:00
.run()
.await
2021-11-04 22:37:16 +00:00
}