aboutsummaryrefslogtreecommitdiff
path: root/server/src
diff options
context:
space:
mode:
Diffstat (limited to 'server/src')
-rw-r--r--server/src/routes/search.rs45
1 files changed, 23 insertions, 22 deletions
diff --git a/server/src/routes/search.rs b/server/src/routes/search.rs
index 8726b8e..3254394 100644
--- a/server/src/routes/search.rs
+++ b/server/src/routes/search.rs
@@ -13,7 +13,7 @@ use jellycommon::{
*,
};
use jellydb::{Filter, Query, Sort};
-use jellyui::components::items::Items;
+use jellyui::components::search::Search;
use log::info;
use rocket::{get, response::content::RawHtml};
@@ -21,30 +21,31 @@ use rocket::{get, response::content::RawHtml};
pub async fn r_search(ri: RequestInfo<'_>, q: Option<&str>) -> MyResult<RawHtml<String>> {
ri.require_user()?;
- let q = q.unwrap();
-
let mut items = Vec::new();
- let t = Instant::now();
- ri.state.database.transaction(&mut |txn| {
- let rows = txn
- .query(Query {
- filter: Filter::Match(Path(vec![NO_VISIBILITY.0]), VISI_VISIBLE.into()),
- sort: Sort::TextSearch(Path(vec![NO_TITLE.0]), q.to_owned()),
- ..Default::default()
- })?
- .take(64)
- .collect::<Result<Vec<_>, _>>()?;
+ if let Some(q) = q {
+ let t = Instant::now();
+ ri.state.database.transaction(&mut |txn| {
+ let rows = txn
+ .query(Query {
+ filter: Filter::Match(Path(vec![NO_VISIBILITY.0]), VISI_VISIBLE.into()),
+ sort: Sort::TextSearch(Path(vec![NO_TITLE.0]), q.to_owned()),
+ ..Default::default()
+ })?
+ .take(64)
+ .collect::<Result<Vec<_>, _>>()?;
- items.clear();
- for (r, _is) in rows {
- let node = txn.get(r)?.unwrap();
- items.push(node);
- }
- Ok(())
- })?;
- info!("search {q:?} took {:?}", t.elapsed());
+ items.clear();
+ for (r, _is) in rows {
+ let node = txn.get(r)?.unwrap();
+ items.push(node);
+ }
+ Ok(())
+ })?;
+ info!("search {q:?} took {:?}", t.elapsed());
+ }
- Ok(ri.respond_ui(&Items {
+ Ok(ri.respond_ui(&Search {
+ query: q.unwrap_or_default(),
items: &items
.iter()
.map(|node| Nku {