aboutsummaryrefslogtreecommitdiff
path: root/database/src/lib.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2026-02-18 13:24:44 +0100
committermetamuffin <metamuffin@disroot.org>2026-02-18 13:24:44 +0100
commit3bbedf5ab337d8c6d608ed0b24b9c656b0ee1004 (patch)
treebf0cda90ed493af37569a7b3f27374decfcddb10 /database/src/lib.rs
parentb176a9f7c36bf26f0e42d8b1bc30e214de9f14c9 (diff)
downloadjellything-3bbedf5ab337d8c6d608ed0b24b9c656b0ee1004.tar
jellything-3bbedf5ab337d8c6d608ed0b24b9c656b0ee1004.tar.bz2
jellything-3bbedf5ab337d8c6d608ed0b24b9c656b0ee1004.tar.zst
dynamic typed db match values
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)
+ }
+}