2019-11-22 02:15:33 +08:00
|
|
|
use std::env::VarError::NotPresent;
|
|
|
|
use std::{env, thread};
|
|
|
|
|
2020-01-16 00:10:33 +08:00
|
|
|
use async_std::task;
|
2019-10-31 22:09:23 +08:00
|
|
|
use log::info;
|
|
|
|
use main_error::MainError;
|
2019-11-20 00:09:06 +08:00
|
|
|
use structopt::StructOpt;
|
2020-01-28 01:26:08 +08:00
|
|
|
use tide::middleware::RequestLogger;
|
2019-10-31 22:09:23 +08:00
|
|
|
|
2019-11-26 18:06:55 +08:00
|
|
|
use meilisearch_http::data::Data;
|
|
|
|
use meilisearch_http::option::Opt;
|
|
|
|
use meilisearch_http::routes;
|
|
|
|
use meilisearch_http::routes::index::index_update_callback;
|
2019-10-31 22:09:23 +08:00
|
|
|
|
2020-01-28 02:11:32 +08:00
|
|
|
use cors::Cors;
|
|
|
|
|
2019-11-22 02:15:33 +08:00
|
|
|
mod analytics;
|
2020-01-28 02:11:32 +08:00
|
|
|
mod cors;
|
2019-11-22 02:15:33 +08:00
|
|
|
|
2019-11-25 21:51:47 +08:00
|
|
|
#[cfg(target_os = "linux")]
|
2019-10-31 22:09:23 +08:00
|
|
|
#[global_allocator]
|
|
|
|
static ALLOC: jemallocator::Jemalloc = jemallocator::Jemalloc;
|
|
|
|
|
|
|
|
pub fn main() -> Result<(), MainError> {
|
2019-11-12 02:03:38 +08:00
|
|
|
env_logger::init();
|
|
|
|
|
2019-11-20 00:09:06 +08:00
|
|
|
let opt = Opt::from_args();
|
2019-10-31 22:09:23 +08:00
|
|
|
let data = Data::new(opt.clone());
|
2019-11-16 00:33:06 +08:00
|
|
|
|
2019-11-22 02:15:33 +08:00
|
|
|
if env::var("MEILI_NO_ANALYTICS") == Err(NotPresent) {
|
|
|
|
thread::spawn(|| analytics::analytics_sender());
|
|
|
|
}
|
|
|
|
|
2019-11-16 00:33:06 +08:00
|
|
|
let data_cloned = data.clone();
|
|
|
|
data.db.set_update_callback(Box::new(move |name, status| {
|
|
|
|
index_update_callback(name, &data_cloned, status);
|
|
|
|
}));
|
|
|
|
|
2020-01-16 00:10:33 +08:00
|
|
|
let mut app = tide::with_state(data);
|
2019-10-31 22:09:23 +08:00
|
|
|
|
2020-01-28 02:11:32 +08:00
|
|
|
app.middleware(Cors::new());
|
2020-01-28 01:26:08 +08:00
|
|
|
app.middleware(RequestLogger::new());
|
2020-01-16 00:10:33 +08:00
|
|
|
// app.middleware(tide_compression::Compression::new());
|
|
|
|
// app.middleware(tide_compression::Decompression::new());
|
2019-10-31 22:09:23 +08:00
|
|
|
|
|
|
|
routes::load_routes(&mut app);
|
|
|
|
|
|
|
|
info!("Server HTTP enabled");
|
|
|
|
|
2020-01-16 00:10:33 +08:00
|
|
|
task::block_on(async {
|
|
|
|
app.listen(opt.http_addr).await.unwrap();
|
|
|
|
});
|
2019-10-31 22:09:23 +08:00
|
|
|
Ok(())
|
2019-10-31 22:00:36 +08:00
|
|
|
}
|