48 lines
1.1 KiB
Rust
48 lines
1.1 KiB
Rust
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])
|
|
}
|