From 6d0a4d03705b96b252a6b29d3b8c188b9c903b89 Mon Sep 17 00:00:00 2001 From: Kjetil Orbekk Date: Mon, 3 Feb 2020 22:55:36 -0500 Subject: Refactor importer to store tasks in postgresql --- src/server.rs | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) (limited to 'src/server.rs') 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>>, 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, ¶ms); + 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(); } -- cgit v1.2.3