aboutsummaryrefslogtreecommitdiff
path: root/database/src/query_syntax.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2026-03-11 16:54:36 +0100
committermetamuffin <metamuffin@disroot.org>2026-03-11 16:54:36 +0100
commit578b32c9119692fb049fa56c7d52f2fbb8d485d7 (patch)
tree0091590ceb025f390a57ecbf8352220b70f8f788 /database/src/query_syntax.rs
parentd79e74cc8ece8a0f63164fb458b99eea38d02525 (diff)
downloadjellything-578b32c9119692fb049fa56c7d52f2fbb8d485d7.tar
jellything-578b32c9119692fb049fa56c7d52f2fbb8d485d7.tar.bz2
jellything-578b32c9119692fb049fa56c7d52f2fbb8d485d7.tar.zst
text search multiple fields
Diffstat (limited to 'database/src/query_syntax.rs')
-rw-r--r--database/src/query_syntax.rs16
1 files changed, 13 insertions, 3 deletions
diff --git a/database/src/query_syntax.rs b/database/src/query_syntax.rs
index 9efc3d5..4b08307 100644
--- a/database/src/query_syntax.rs
+++ b/database/src/query_syntax.rs
@@ -76,7 +76,14 @@ impl Display for Sort {
)
}
Sort::TextSearch(path, value) => {
- write!(f, "TEXT SEARCH {path} = {value:?}")
+ write!(
+ f,
+ "TEXT SEARCH {} = {value:?}",
+ path.iter()
+ .map(|p| p.to_string())
+ .collect::<Vec<_>>()
+ .join(",")
+ )
}
}
}
@@ -144,10 +151,13 @@ impl FromStr for Sort {
} else if s == "RANDOM" {
Sort::Random(1)
} else if let Some(s) = s.strip_prefix("TEXT SEARCH ")
- && let Some((path, value)) = s.split_once(" = ")
+ && let Some((paths, value)) = s.split_once(" = ")
{
Sort::TextSearch(
- Path::from_str(path).map_err(|e| anyhow!("{e}"))?,
+ paths
+ .split(",")
+ .map(|p| Path::from_str(p).map_err(|e| anyhow!("{e}")))
+ .collect::<Result<Vec<_>, _>>()?,
value.to_owned(),
)
} else if let Some((order, rest)) = s.split_once(" BY ")