1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
use wasm_bindgen::JsValue;

use crate::KeyRange;

/// Specifies a query when fetching data from object store
#[derive(Debug, Clone, PartialEq)]
pub enum Query {
    /// Denotes a single key
    Key(JsValue),
    /// Denotes a key range
    KeyRange(KeyRange),
}

impl From<JsValue> for Query {
    fn from(value: JsValue) -> Self {
        Query::Key(value)
    }
}

impl From<KeyRange> for Query {
    fn from(value: KeyRange) -> Self {
        Query::KeyRange(value)
    }
}

impl From<Query> for JsValue {
    fn from(value: Query) -> Self {
        match value {
            Query::Key(value) => value,
            Query::KeyRange(value) => value.into(),
        }
    }
}