diff options
Diffstat (limited to 'src/command/history.rs')
-rw-r--r-- | src/command/history.rs | 43 |
1 files changed, 27 insertions, 16 deletions
diff --git a/src/command/history.rs b/src/command/history.rs index 5a943dea..5811eed9 100644 --- a/src/command/history.rs +++ b/src/command/history.rs @@ -155,23 +155,34 @@ impl Cmd { human, cmd_only, } => { - let params = (session, cwd); - let cwd = env::current_dir()?.display().to_string(); - let session = env::var("ATUIN_SESSION")?; - - let query_session = format!("select * from history where session = {};", session); - - let query_dir = format!("select * from history where cwd = {};", cwd); - let query_session_dir = format!( - "select * from history where cwd = {} and session = {};", - cwd, session - ); + let session = if *session { + Some(env::var("ATUIN_SESSION")?) + } else { + None + }; + let cwd = if *cwd { + Some(env::current_dir()?.display().to_string()) + } else { + None + }; - let history = match params { - (false, false) => db.list(None, false).await?, - (true, false) => db.query_history(query_session.as_str()).await?, - (false, true) => db.query_history(query_dir.as_str()).await?, - (true, true) => db.query_history(query_session_dir.as_str()).await?, + let history = match (session, cwd) { + (None, None) => db.list(None, false).await?, + (None, Some(cwd)) => { + let query = format!("select * from history where cwd = {};", cwd); + db.query_history(&query).await? + } + (Some(session), None) => { + let query = format!("select * from history where session = {};", session); + db.query_history(&query).await? + } + (Some(session), Some(cwd)) => { + let query = format!( + "select * from history where cwd = {} and session = {};", + cwd, session + ); + db.query_history(&query).await? + } }; print_list(&history, *human, *cmd_only); |