aboutsummaryrefslogtreecommitdiff
path: root/database/src/query_syntax.rs
diff options
context:
space:
mode:
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 ")