summaryrefslogtreecommitdiff
path: root/src/server.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/server.rs')
-rw-r--r--src/server.rs28
1 files changed, 19 insertions, 9 deletions
diff --git a/src/server.rs b/src/server.rs
index abc430b..f0dd591 100644
--- a/src/server.rs
+++ b/src/server.rs
@@ -17,6 +17,8 @@ use std::collections::HashMap;
use std::sync::mpsc::Sender;
use std::sync::Mutex;
use threadpool::ThreadPool;
+use chrono::Utc;
+use serde_json::to_value;
use crate::db;
use crate::error::Error;
@@ -133,14 +135,18 @@ fn link_strava_callback(
#[get("/import_strava")]
fn import_strava(
conn: Db,
- tx: State<Mutex<Sender<importer::Command>>>,
user: LoggedInUser,
) -> Result<(), Error> {
let user = db::get_user(&*conn, &user.username)?;
- tx.lock()
- .expect("FIX")
- .send(importer::Command::ImportStravaUser(user))
- .expect("FIX");
+ let command =
+ importer::Command::ImportStravaUser { username: user.username.clone() };
+ db::insert_task(&conn,
+ &models::NewTask {
+ start_at: Utc::now(),
+ state: models::TaskState::NEW,
+ username: user.username.as_str(),
+ payload: &to_value(command)?,
+ })?;
Ok(())
}
@@ -179,12 +185,16 @@ pub fn start(conn: diesel::PgConnection, db_url: &str, base_url: &str) {
.finalize()
.unwrap();
- let importer_pool = ThreadPool::with_name("import".to_string(), importer::WORKERS);
- let tx = importer::run(importer_pool.clone(), conn, &params);
+ let strava = strava::StravaImpl::new(
+ params.strava_client_id.clone(),
+ params.strava_client_secret.clone(),
+ );
+
+ let importer = importer::Importer::new(conn, strava);
+ importer.run();
rocket::custom(config)
.manage(params)
- .manage(Mutex::new(tx))
.mount(
"/",
routes![
@@ -200,5 +210,5 @@ pub fn start(conn: diesel::PgConnection, db_url: &str, base_url: &str) {
.attach(Db::fairing())
.launch();
- importer_pool.join();
+ importer.join();
}