aboutsummaryrefslogtreecommitdiff
path: root/database/src/query.rs
diff options
context:
space:
mode:
Diffstat (limited to 'database/src/query.rs')
-rw-r--r--database/src/query.rs43
1 files changed, 43 insertions, 0 deletions
diff --git a/database/src/query.rs b/database/src/query.rs
new file mode 100644
index 0000000..7d5c11c
--- /dev/null
+++ b/database/src/query.rs
@@ -0,0 +1,43 @@
+/*
+ This file is part of jellything (https://codeberg.org/metamuffin/jellything)
+ which is licensed under the GNU Affero General Public License (version 3); see /COPYING.
+ Copyright (C) 2026 metamuffin <metamuffin.org>
+*/
+
+use jellycommon::jellyobject::path::Path;
+
+pub struct Query {
+ pub filter: Filter,
+ pub sort: Sort,
+}
+
+pub enum Sort {
+ None,
+ Value(ValueSortComponent),
+ TextSearch(Path, String),
+}
+pub struct ValueSortComponent {
+ pub order: SortOrder,
+ pub path: Path,
+ pub multi: MultiBehaviour,
+ pub offset: Option<Vec<u8>>,
+}
+pub enum MultiBehaviour {
+ First,
+ ForEach,
+ Max,
+ Min,
+ Count,
+}
+pub enum SortOrder {
+ Ascending,
+ Descending,
+}
+
+#[derive(Debug, Clone)]
+pub enum Filter {
+ All(Vec<Filter>),
+ Any(Vec<Filter>),
+ Match(Path, Vec<u8>),
+ Has(Path),
+}