From 39d1cd64bc5ffe250dc2a30d05d0b6312e7abbc1 Mon Sep 17 00:00:00 2001 From: Vincent Ambo Date: Sat, 14 Apr 2018 22:05:06 +0200 Subject: feat(main/db): Schedule regular search view refresh Schedules refreshes of the database view used for search at one-minute intervals. --- src/main.rs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/main.rs') diff --git a/src/main.rs b/src/main.rs index 61969bcff9..9f4eea03fa 100644 --- a/src/main.rs +++ b/src/main.rs @@ -42,6 +42,8 @@ extern crate rand; extern crate reqwest; extern crate serde; extern crate serde_json; +extern crate tokio; +extern crate tokio_timer; extern crate url; extern crate url_serde; @@ -86,6 +88,8 @@ fn main() { let db_addr = SyncArbiter::start(2, move || DbExecutor(pool.clone())); + schedule_search_refresh(db_addr.clone()); + info!("Initialising OIDC integration ..."); let oidc_url = config("OIDC_DISCOVERY_URL"); let oidc_config = oidc::load_oidc(&oidc_url) @@ -162,3 +166,18 @@ fn main() { let _ = sys.run(); } + +fn schedule_search_refresh(db: Addr) { + use tokio::prelude::*; + use tokio::timer::Interval; + use std::time::{Duration, Instant}; + use std::thread; + + let task = Interval::new(Instant::now(), Duration::from_secs(60)) + .from_err() + .for_each(move |_| db.send(db::RefreshSearchView).flatten()) + .map_err(|err| error!("Error while updating search view: {}", err)); + //.and_then(|_| debug!("Refreshed search view in DB")); + + thread::spawn(|| tokio::run(task)); +} -- cgit 1.4.1