diff options
author | Kjetil Orbekk <kjetil.orbekk@gmail.com> | 2020-02-04 09:07:12 -0500 |
---|---|---|
committer | Kjetil Orbekk <kjetil.orbekk@gmail.com> | 2020-02-04 09:07:12 -0500 |
commit | ffc459d5bcca732474fd770d97f7bbd55223ca9a (patch) | |
tree | 22af9a7a8456f6d5e90d3b8d547d423138dd676f /src/main.rs | |
parent | fa919608641021561c620897f7aed9789d4790b5 (diff) |
Add command to batch process all raw data
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/src/main.rs b/src/main.rs index 235c71f..c745816 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,11 +3,17 @@ extern crate fern; #[macro_use] extern crate log; extern crate clap; + use clap::App; use clap::Arg; use clap::SubCommand; use diesel::connection::Connection; use diesel::pg::PgConnection; +use pjournal::importer; +use pjournal::models; +use pjournal::db; +use chrono::Utc; +use serde_json::to_value; fn setup_logger() -> Result<(), fern::InitError> { use fern::colors::{Color, ColoredLevelConfig}; @@ -112,6 +118,10 @@ fn main() { .arg(Arg::with_name("USERNAME").required(true).index(1)) .arg(Arg::with_name("PASSWORD").required(true).index(2)), ) + .subcommand( + SubCommand::with_name("process_all_data") + .about("create a ProcessAllRawData task") + ) .get_matches(); setup_logger().expect("logger"); @@ -124,7 +134,7 @@ fn main() { let conn = PgConnection::establish(db_url).unwrap(); if let Some(matches) = matches.subcommand_matches("init") { - let config = pjournal::models::Config { + let config = models::Config { strava_client_id: matches.value_of("strava_client_id").unwrap().to_string(), strava_client_secret: matches .value_of("strava_client_secret") @@ -134,11 +144,20 @@ fn main() { singleton: true, }; - pjournal::db::create_config(&conn, &config).unwrap(); + db::create_config(&conn, &config).unwrap(); } else if let Some(matches) = matches.subcommand_matches("adduser") { let user = matches.value_of("USERNAME").unwrap(); let password = matches.value_of("PASSWORD").unwrap(); - pjournal::db::adduser(&conn, user, password).unwrap(); + db::adduser(&conn, user, password).unwrap(); + } else if let Some(_matches) = matches.subcommand_matches("process_all_data") { + let command = importer::Command::ProcessAllRawData; + db::insert_task( + &conn, &models::NewTask { + start_at: Utc::now(), + state: models::TaskState::NEW, + username: "system", + payload: &to_value(command).unwrap(), + }).expect("insert"); } else { info!("Start server"); pjournal::server::start(conn, db_url, base_url); |