diff options
Diffstat (limited to 'database/src/lib.rs')
| -rw-r--r-- | database/src/lib.rs | 45 |
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) + } +} |