#[macro_use] extern crate diesel; #[macro_use] extern crate diesel_migrations; extern crate dotenv; extern crate core; use actix_web::{middleware, web, App, HttpServer}; use actix_web::middleware::normalize::TrailingSlash; use env_logger::{Builder, Env}; mod db; mod handlers; mod return_models; mod types; #[actix_web::main] async fn main() -> std::io::Result<()> { db::run_migrations(); Builder::from_env(Env::default().default_filter_or("info")).init(); HttpServer::new(|| { App::new() .wrap(middleware::DefaultHeaders::new() .header("Access-Control-Allow-Origin", "*") .header("Access-Control-Allow-Headers", "*") .header("Access-Control-Allow-Methods", "*") ) .wrap(middleware::Logger::default()) .wrap(middleware::NormalizePath::new(TrailingSlash::Trim)) .app_data(web::JsonConfig::default().error_handler(handlers::json_error_handler)) .service(handlers::v1::schedules::index) .service(handlers::v1::schedules::tagged) .service(handlers::v1::schedules::show) .service(handlers::v1::schedules::add) .service(handlers::v1::schedules::update) .service(handlers::v1::schedules::delete) }) .bind("127.0.0.1:5000")? .run() .await }