#[macro_use] extern crate diesel; #[macro_use] extern crate diesel_migrations; extern crate dotenv; use actix_web::{middleware, web, App, HttpServer}; use actix_web::middleware::normalize::TrailingSlash; use env_logger::{Builder, Env}; mod db; mod handlers; 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)) .route( "/api/v1/schedules", web::get().to(handlers::v1::schedules::index), ) .route( "/api/v1/schedules", web::post().to(handlers::v1::schedules::add), ) .service(handlers::v1::schedules::show) .route( "/api/v1/schedules/{id}", web::delete().to(handlers::v1::schedules::delete), ) }) .bind("127.0.0.1:5000")? .run() .await }