Files
Modrinth-plus/src/main.rs

54 lines
1.5 KiB
Rust
Raw Normal View History

use crate::search::indexing::index_mods;
2020-05-28 13:28:58 -07:00
use actix_web::middleware::Logger;
use actix_web::{web, App, HttpServer};
2020-05-28 13:28:58 -07:00
use env_logger::Env;
use log::info;
2020-06-22 21:04:17 -07:00
use std::env;
use std::fs::File;
2020-05-10 22:30:28 -07:00
2020-05-14 22:53:22 -07:00
mod database;
mod models;
2020-05-27 20:51:28 +02:00
mod routes;
mod search;
2020-05-09 22:11:48 -07:00
#[actix_rt::main]
2020-05-10 22:30:28 -07:00
async fn main() -> std::io::Result<()> {
2020-05-28 13:28:58 -07:00
env_logger::from_env(Env::default().default_filter_or("info")).init();
2020-06-22 21:04:17 -07:00
dotenv::dotenv().ok();
2020-05-28 13:28:58 -07:00
let client = database::connect().await.unwrap();
// Get executable path
let mut exe_path = env::current_exe()?.parent().unwrap().to_path_buf();
// Create the path to the index lock file
exe_path.push("index.v1.lock");
//Indexing mods if not already done
if env::args().any(|x| x == "regen") {
// User forced regen of indexing
info!("Forced regeneration of indexes!");
index_mods(client).await.unwrap();
} else if exe_path.exists() {
// The indexes were not created, or the version was upgraded
info!("Indexing of mods for first time...");
index_mods(client).await.unwrap();
// Create the lock file
File::create(exe_path)?;
}
2020-05-09 22:11:48 -07:00
2020-05-28 13:28:58 -07:00
info!("Starting Actix HTTP server!");
2020-06-22 21:04:17 -07:00
2020-05-09 22:11:48 -07:00
//Init App
HttpServer::new(move || {
App::new()
2020-05-28 13:28:58 -07:00
.wrap(Logger::default())
.wrap(Logger::new("%a %{User-Agent}i"))
2020-05-14 22:53:22 -07:00
.service(routes::index_get)
.service(routes::mod_search)
.default_service(web::get().to(routes::not_found))
2020-05-09 22:11:48 -07:00
})
.bind("127.0.0.1:".to_string() + &dotenv::var("PORT").unwrap())?
2020-05-27 20:51:28 +02:00
.run()
.await
2020-05-09 22:11:48 -07:00
}