diff options
| author | metamuffin <metamuffin@disroot.org> | 2026-02-19 18:17:32 +0100 |
|---|---|---|
| committer | metamuffin <metamuffin@disroot.org> | 2026-02-19 18:17:32 +0100 |
| commit | 3a81f654a9f49649fb6755b6e35649f0102a9572 (patch) | |
| tree | 3b6be37eac969fea2b6dee0b718cc77efe2230a8 /database/src/lib.rs | |
| parent | 962309ddcb033e0032258d6badebb90415a34e3d (diff) | |
| download | jellything-3a81f654a9f49649fb6755b6e35649f0102a9572.tar jellything-3a81f654a9f49649fb6755b6e35649f0102a9572.tar.bz2 jellything-3a81f654a9f49649fb6755b6e35649f0102a9572.tar.zst | |
all idents as string; move value type; add cow to queries
Diffstat (limited to 'database/src/lib.rs')
| -rw-r--r-- | database/src/lib.rs | 55 |
1 files changed, 7 insertions, 48 deletions
diff --git a/database/src/lib.rs b/database/src/lib.rs index 2ecf3c6..ea12447 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, Tag}; +use jellyobject::{ObjectBuffer, Path, Value}; pub type RowNum = u64; pub type RowIter = Box<dyn Iterator<Item = Result<(RowNum, Vec<u8>)>>>; @@ -33,8 +33,8 @@ pub trait Transaction { } #[derive(Default, Clone)] -pub struct Query { - pub filter: Filter, +pub struct Query<'a> { + pub filter: Filter<'a>, pub sort: Sort, } @@ -70,52 +70,11 @@ pub enum SortOrder { } #[derive(Debug, Clone, Default)] -pub enum Filter { +pub enum Filter<'a> { #[default] True, - All(Vec<Filter>), - Any(Vec<Filter>), - Match(Path, Value), + All(Vec<Filter<'a>>), + Any(Vec<Filter<'a>>), + Match(Path, Value<'a>), 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) - } -} |