aboutsummaryrefslogtreecommitdiffstats
path: root/crates/turtle/src/command/client/search
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2026-06-12 01:54:21 +0200
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2026-06-12 01:54:21 +0200
commitbbdf38018b47328b5faa2cef635c37095045be72 (patch)
tree8983817d547551ae12508a8ae8731b622d990af4 /crates/turtle/src/command/client/search
parentfeat(server): Make user stuff stateless (diff)
downloadatuin-bbdf38018b47328b5faa2cef635c37095045be72.zip
feat(server): Really make users stateless (with tests)
This commit also remove another load of unneeded features.
Diffstat (limited to 'crates/turtle/src/command/client/search')
-rw-r--r--crates/turtle/src/command/client/search/engines.rs11
-rw-r--r--crates/turtle/src/command/client/search/engines/daemon.rs11
-rw-r--r--crates/turtle/src/command/client/search/engines/db.rs11
-rw-r--r--crates/turtle/src/command/client/search/engines/skim.rs15
-rw-r--r--crates/turtle/src/command/client/search/interactive.rs11
5 files changed, 25 insertions, 34 deletions
diff --git a/crates/turtle/src/command/client/search/engines.rs b/crates/turtle/src/command/client/search/engines.rs
index d6335a38..a84c4798 100644
--- a/crates/turtle/src/command/client/search/engines.rs
+++ b/crates/turtle/src/command/client/search/engines.rs
@@ -1,9 +1,9 @@
-use async_trait::async_trait;
use crate::atuin_client::{
- database::{Context, Database, OptFilters},
- history::{AUTHOR_FILTER_ALL_USER, History, HistoryId},
+ database::{ClientSqlite, Context, OptFilters},
+ history::{History, HistoryId},
settings::{FilterMode, SearchMode, Settings},
};
+use async_trait::async_trait;
use eyre::Result;
use super::cursor::Cursor;
@@ -67,10 +67,10 @@ pub(crate) trait SearchEngine: Send + Sync + 'static {
async fn full_query(
&mut self,
state: &SearchState,
- db: &mut dyn Database,
+ db: &mut ClientSqlite,
) -> Result<Vec<History>>;
- async fn query(&mut self, state: &SearchState, db: &mut dyn Database) -> Result<Vec<History>> {
+ async fn query(&mut self, state: &SearchState, db: &mut ClientSqlite) -> Result<Vec<History>> {
if state.input.as_str().is_empty() {
Ok(db
.search(
@@ -80,7 +80,6 @@ pub(crate) trait SearchEngine: Send + Sync + 'static {
"",
OptFilters {
limit: Some(200),
- authors: vec![AUTHOR_FILTER_ALL_USER.to_string()],
..Default::default()
},
)
diff --git a/crates/turtle/src/command/client/search/engines/daemon.rs b/crates/turtle/src/command/client/search/engines/daemon.rs
index df5ab9f8..55b3c6f2 100644
--- a/crates/turtle/src/command/client/search/engines/daemon.rs
+++ b/crates/turtle/src/command/client/search/engines/daemon.rs
@@ -1,6 +1,6 @@
use crate::atuin_client::{
- database::{Database, OptFilters},
- history::{AUTHOR_FILTER_ALL_USER, History},
+ database::{ClientSqlite, OptFilters},
+ history::History,
settings::{SearchMode, Settings},
};
use crate::atuin_daemon::client::{DaemonClientErrorKind, SearchClient, classify_error};
@@ -75,7 +75,7 @@ impl Search {
async fn fallback_to_db_search(
&self,
state: &SearchState,
- db: &dyn Database,
+ db: &ClientSqlite,
) -> Result<Vec<History>> {
let results = db
.search(
@@ -85,7 +85,6 @@ impl Search {
state.input.as_str(),
OptFilters {
limit: Some(200),
- authors: vec![AUTHOR_FILTER_ALL_USER.to_string()],
..Default::default()
},
)
@@ -95,7 +94,7 @@ impl Search {
}
#[instrument(skip_all, level = Level::TRACE, name = "hydrate_from_db", fields(count = ids.len()))]
- async fn hydrate_from_db(&self, db: &dyn Database, ids: &[String]) -> Result<Vec<History>> {
+ async fn hydrate_from_db(&self, db: &ClientSqlite, ids: &[String]) -> Result<Vec<History>> {
let placeholders: Vec<String> = ids.iter().map(|id| format!("'{id}'")).collect();
let sql_query = format!(
"SELECT * FROM history WHERE id IN ({}) ORDER BY timestamp DESC",
@@ -111,7 +110,7 @@ impl SearchEngine for Search {
async fn full_query(
&mut self,
state: &SearchState,
- db: &mut dyn Database,
+ db: &mut ClientSqlite,
) -> Result<Vec<History>> {
let query = state.input.as_str().to_string();
diff --git a/crates/turtle/src/command/client/search/engines/db.rs b/crates/turtle/src/command/client/search/engines/db.rs
index 86917a02..e6657b17 100644
--- a/crates/turtle/src/command/client/search/engines/db.rs
+++ b/crates/turtle/src/command/client/search/engines/db.rs
@@ -1,12 +1,10 @@
use super::{SearchEngine, SearchState};
-use async_trait::async_trait;
use crate::atuin_client::{
- database::Database,
- database::OptFilters,
- database::{QueryToken, QueryTokenizer},
- history::{AUTHOR_FILTER_ALL_USER, History},
+ database::{ClientSqlite, OptFilters, QueryToken, QueryTokenizer},
+ history::History,
settings::SearchMode,
};
+use async_trait::async_trait;
use eyre::Result;
use norm::Metric;
use norm::fzf::{FzfParser, FzfV2};
@@ -21,7 +19,7 @@ impl SearchEngine for Search {
async fn full_query(
&mut self,
state: &SearchState,
- db: &mut dyn Database,
+ db: &mut ClientSqlite,
) -> Result<Vec<History>> {
let results = db
.search(
@@ -31,7 +29,6 @@ impl SearchEngine for Search {
state.input.as_str(),
OptFilters {
limit: Some(200),
- authors: vec![AUTHOR_FILTER_ALL_USER.to_string()],
..Default::default()
},
)
diff --git a/crates/turtle/src/command/client/search/engines/skim.rs b/crates/turtle/src/command/client/search/engines/skim.rs
index fe2bdea3..a6a77573 100644
--- a/crates/turtle/src/command/client/search/engines/skim.rs
+++ b/crates/turtle/src/command/client/search/engines/skim.rs
@@ -1,18 +1,13 @@
use std::path::Path;
+use crate::atuin_client::{database::ClientSqlite, history::History, settings::FilterMode};
use async_trait::async_trait;
-use crate::atuin_client::{
- database::Database,
- history::{History, is_known_agent},
- settings::FilterMode,
-};
use eyre::Result;
use fuzzy_matcher::{FuzzyMatcher, skim::SkimMatcherV2};
use itertools::Itertools;
use time::OffsetDateTime;
use tokio::task::yield_now;
use tracing::{Level, instrument, warn};
-use uuid;
use super::{SearchEngine, SearchState};
@@ -36,7 +31,7 @@ impl SearchEngine for Search {
async fn full_query(
&mut self,
state: &SearchState,
- db: &mut dyn Database,
+ db: &mut ClientSqlite,
) -> Result<Vec<History>> {
if self.all_history.is_empty() {
self.all_history = load_all_history(db).await;
@@ -56,7 +51,7 @@ impl SearchEngine for Search {
}
#[instrument(skip_all, level = Level::TRACE, name = "load_all_history")]
-async fn load_all_history(db: &dyn Database) -> Vec<(History, i32)> {
+async fn load_all_history(db: &ClientSqlite) -> Vec<(History, i32)> {
db.all_with_count().await.unwrap()
}
@@ -76,9 +71,7 @@ async fn fuzzy_search(
if i % 256 == 0 {
yield_now().await;
}
- if is_known_agent(&history.author) {
- continue;
- }
+
let context = &state.context;
let git_root = context
.git_root
diff --git a/crates/turtle/src/command/client/search/interactive.rs b/crates/turtle/src/command/client/search/interactive.rs
index 380fc33b..1d067e50 100644
--- a/crates/turtle/src/command/client/search/interactive.rs
+++ b/crates/turtle/src/command/client/search/interactive.rs
@@ -6,7 +6,10 @@ use std::{
#[cfg(unix)]
use std::io::Read as _;
-use crate::atuin_common::{shell::Shell, utils::Escapable as _};
+use crate::{
+ atuin_client::database::ClientSqlite,
+ atuin_common::{shell::Shell, utils::Escapable as _},
+};
use eyre::Result;
use time::OffsetDateTime;
use unicode_width::{UnicodeWidthChar, UnicodeWidthStr};
@@ -17,7 +20,7 @@ use super::{
history_list::{HistoryList, ListState},
};
use crate::atuin_client::{
- database::{Context, Database, current_context},
+ database::{Context, current_context},
history::{History, HistoryId, HistoryStats, store::HistoryStore},
settings::{
CursorStyle, ExitMode, FilterMode, KeymapMode, PreviewStrategy, SearchMode, Settings,
@@ -149,7 +152,7 @@ struct StyleState {
impl State {
async fn query_results(
&mut self,
- db: &mut dyn Database,
+ db: &mut ClientSqlite,
smart_sort: bool,
) -> Result<Vec<History>> {
let results = self.engine.query(&self.search, db).await?;
@@ -1550,7 +1553,7 @@ fn compute_popup_placement(
pub(crate) async fn history(
query: &[String],
settings: &Settings,
- mut db: impl Database,
+ mut db: ClientSqlite,
history_store: &HistoryStore,
theme: &Theme,
) -> Result<String> {