aboutsummaryrefslogtreecommitdiff
path: root/database/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'database/src/lib.rs')
-rw-r--r--database/src/lib.rs45
1 files changed, 43 insertions, 2 deletions
diff --git a/database/src/lib.rs b/database/src/lib.rs
index 9b76c58..ed9dc47 100644
--- a/database/src/lib.rs
+++ b/database/src/lib.rs
@@ -9,7 +9,7 @@ pub mod query_ser;
pub mod test_shared;
use anyhow::Result;
-use jellyobject::{ObjectBuffer, Path};
+use jellyobject::{ObjectBuffer, Path, Tag};
pub type RowNum = u64;
pub type RowIter = Box<dyn Iterator<Item = Result<(RowNum, Vec<u8>)>>>;
@@ -74,6 +74,47 @@ pub enum Filter {
True,
All(Vec<Filter>),
Any(Vec<Filter>),
- Match(Path, Vec<u8>),
+ Match(Path, Value),
Has(Path),
}
+
+#[derive(Debug, Clone)]
+pub enum Value {
+ Tag(Tag),
+ U32(u32),
+ U64(u64),
+ I64(i64),
+ String(String),
+ Binary(Vec<u8>),
+}
+
+impl From<&str> for Value {
+ fn from(value: &str) -> Self {
+ Self::String(value.to_owned())
+ }
+}
+impl From<String> for Value {
+ fn from(value: String) -> Self {
+ Self::String(value)
+ }
+}
+impl From<u32> for Value {
+ fn from(value: u32) -> Self {
+ Self::U32(value)
+ }
+}
+impl From<u64> for Value {
+ fn from(value: u64) -> Self {
+ Self::U64(value)
+ }
+}
+impl From<i64> for Value {
+ fn from(value: i64) -> Self {
+ Self::I64(value)
+ }
+}
+impl From<Tag> for Value {
+ fn from(value: Tag) -> Self {
+ Self::Tag(value)
+ }
+}