about summary refs log tree commit diff
path: root/src/main.rs
diff options
context:
space:
mode:
authorVincent Ambo <tazjin@gmail.com>2018-04-14T20·05+0200
committerVincent Ambo <github@tazj.in>2018-04-14T20·21+0200
commit39d1cd64bc5ffe250dc2a30d05d0b6312e7abbc1 (patch)
tree8b364010a51f01e1df06908f403162b5ffceddbf /src/main.rs
parent3e5b1098c6ae2852ea2df37b7c292cb37d5b1e84 (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.rs19
1 files changed, 19 insertions, 0 deletions
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<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));
+}