mod api; mod dtos; mod models; mod schema; use crate::api::hit; use crate::api::image; use crate::api::tracker; use diesel::{Connection, PgConnection}; use std::env; #[macro_use] extern crate rocket; #[get("/")] fn index() -> &'static str { "Hello world!" } // TODO: add logging // TODO: add auth #[launch] fn rocket() -> _ { dotenv::dotenv().ok(); let database_url = env::var("DATABASE_URL").expect("DATABASE_URL must be set"); let image_path = env::var("IMAGE_PATH").expect("IMAGE_PATH must be set"); let db = PgConnection::establish(&database_url) .expect(&format!("Error connecting to {}", database_url)); let app_data = models::AppState::new(db, image_path); rocket::build() .manage(app_data) .mount("/", routes![index]) .mount( "/tracker", routes![ tracker::index, tracker::get, tracker::create, tracker::delete ], ) .mount("/hit", routes![hit::index, hit::get, hit::delete]) .mount("/image", routes![image::get]) }