diff options
author | Vincent Ambo <tazjin@gmail.com> | 2018-04-14T20·05+0200 |
---|---|---|
committer | Vincent Ambo <github@tazj.in> | 2018-04-14T20·21+0200 |
commit | 39d1cd64bc5ffe250dc2a30d05d0b6312e7abbc1 (patch) | |
tree | 8b364010a51f01e1df06908f403162b5ffceddbf /src/main.rs | |
parent | 3e5b1098c6ae2852ea2df37b7c292cb37d5b1e84 (diff) |
feat(main/db): Schedule regular search view refresh
Schedules refreshes of the database view used for search at one-minute intervals.
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/main.rs b/src/main.rs index 61969bcff92a..9f4eea03fa31 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<Syn, DbExecutor>) { + 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)); +} |