aboutsummaryrefslogtreecommitdiff
path: root/database/src/lib.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2026-02-19 18:17:32 +0100
committermetamuffin <metamuffin@disroot.org>2026-02-19 18:17:32 +0100
commit3a81f654a9f49649fb6755b6e35649f0102a9572 (patch)
tree3b6be37eac969fea2b6dee0b718cc77efe2230a8 /database/src/lib.rs
parent962309ddcb033e0032258d6badebb90415a34e3d (diff)
downloadjellything-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.rs55
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)
- }
-}