aboutsummaryrefslogtreecommitdiffstats
path: root/crates/turtle/src/atuin_client/database.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/turtle/src/atuin_client/database.rs')
-rw-r--r--crates/turtle/src/atuin_client/database.rs37
1 files changed, 20 insertions, 17 deletions
diff --git a/crates/turtle/src/atuin_client/database.rs b/crates/turtle/src/atuin_client/database.rs
index 24f017be..c730b1d4 100644
--- a/crates/turtle/src/atuin_client/database.rs
+++ b/crates/turtle/src/atuin_client/database.rs
@@ -178,6 +178,7 @@ impl ClientSqlite {
Ok(())
}
+ #[expect(clippy::needless_pass_by_value)]
fn query_history_inner(row: SqliteRow) -> History {
let deleted_at: Option<i64> = row.get("deleted_at");
let hostname: String = row.get("hostname");
@@ -205,7 +206,8 @@ impl ClientSqlite {
.author(author)
.intent(intent)
.deleted_at(
- deleted_at.and_then(|t| OffsetDateTime::from_unix_timestamp_nanos(i128::from(t)).ok()),
+ deleted_at
+ .and_then(|t| OffsetDateTime::from_unix_timestamp_nanos(i128::from(t)).ok()),
)
.build()
.into()
@@ -265,11 +267,10 @@ impl ClientSqlite {
query.and_where_is_null("deleted_at");
}
- let git_root = if let Some(git_root) = context.git_root.clone() {
- git_root.to_str().unwrap_or("/").to_string()
- } else {
- context.cwd.clone()
- };
+ let git_root = context.git_root.clone().map_or_else(
+ || context.cwd.clone(),
+ |git_root| git_root.to_str().unwrap_or("/").to_string(),
+ );
let session_start = get_session_start_time(&context.session);
@@ -352,6 +353,7 @@ impl ClientSqlite {
// Yes I know, it's a lot.
// Could maybe break it down to a searchparams struct or smth but that feels a little... pointless.
// Been debating maybe a DSL for search? eg "before:time limit:1 the query"
+ #[expect(clippy::too_many_lines)]
pub(crate) async fn search(
&self,
search_mode: SearchMode,
@@ -380,11 +382,10 @@ impl ClientSqlite {
sql.order_desc("timestamp");
}
- let git_root = if let Some(git_root) = context.git_root.clone() {
- git_root.to_str().unwrap_or("/").to_string()
- } else {
- context.cwd.clone()
- };
+ let git_root = context.git_root.clone().map_or_else(
+ || context.cwd.clone(),
+ |git_root| git_root.to_str().unwrap_or("/").to_string(),
+ );
let session_start = get_session_start_time(&context.session);
@@ -1120,6 +1121,7 @@ mod test {
}
#[tokio::test(flavor = "multi_thread")]
+ #[expect(clippy::similar_names)]
async fn test_paged_basic() {
let mut db = ClientSqlite::new("sqlite::memory:", test_local_timeout())
.await
@@ -1188,8 +1190,8 @@ mod test {
// With unique flag - should get 3 (duplicates collapsed)
let mut paged_unique = db.all_paged(10, false, true);
- let page_unique = paged_unique.next().await.unwrap().unwrap();
- assert_eq!(page_unique.len(), 3);
+ let paged_unique = paged_unique.next().await.unwrap().unwrap();
+ assert_eq!(paged_unique.len(), 3);
}
#[tokio::test(flavor = "multi_thread")]
@@ -1301,11 +1303,12 @@ impl<'a> Iterator for QueryTokenizer<'a> {
return Some(QueryToken::Or);
}
- let mut is_inverse = false;
- if let Some(s) = part.strip_prefix('!') {
+ let is_inverse = part.strip_prefix('!').is_some_and(|s| {
part = s;
- is_inverse = true;
- }
+ true
+ });
+
+ #[expect(clippy::option_if_let_else, reason = "It's too ugly")]
let token = if let Some(s) = part.strip_prefix('^') {
QueryToken::MatchStart(s, is_inverse)
} else if let Some(s) = part.strip_suffix('$') {