pub enum Query {
Eq(Key, Value),
Ne(Key, Value),
Like(Key, String),
Lt(Key, Value),
Lte(Key, Value),
Gt(Key, Value),
Gte(Key, Value),
And(Vec<Query>),
Or(Vec<Query>),
Associated(Entity, Box<Query>),
All,
}Variants§
Eq(Key, Value)
Ne(Key, Value)
Like(Key, String)
Lt(Key, Value)
Lte(Key, Value)
Gt(Key, Value)
Gte(Key, Value)
And(Vec<Query>)
Or(Vec<Query>)
Associated(Entity, Box<Query>)
All
Implementations§
Source§impl Query
impl Query
Sourcepub fn eq<K, V>(key: K, value: V) -> Query
pub fn eq<K, V>(key: K, value: V) -> Query
Create a new query that matches documents based on exact match.
use deeb_core::database::query::Query;
let query = Query::eq("name", "John");Sourcepub fn ne<K, V>(key: K, value: V) -> Query
pub fn ne<K, V>(key: K, value: V) -> Query
Create a new query that matches documents based on not equal match.
use deeb_core::database::query::Query;
let query = Query::ne("name", "John");Sourcepub fn and(queries: Vec<Query>) -> Query
pub fn and(queries: Vec<Query>) -> Query
Create a new query that matches documents based on multiple conditions.
use deeb_core::database::query::Query;
let query = Query::and(vec![
Query::eq("name", "John"),
Query::eq("age", 30),
Query::eq("city", "New York"),
]);Sourcepub fn or(queries: Vec<Query>) -> Query
pub fn or(queries: Vec<Query>) -> Query
Create a new query that matches documents based on multiple conditions.
use deeb_core::database::query::Query;
let query = Query::or(vec![
Query::eq("name", "John"),
Query::eq("age", 30),
Query::eq("city", "New York"),
]);Sourcepub fn like<K, V>(key: K, value: V) -> Query
pub fn like<K, V>(key: K, value: V) -> Query
Create a new query that matches documents based on like match.
use deeb_core::database::query::Query;
let query = Query::like("name", "John");Sourcepub fn lt<K, V>(key: K, value: V) -> Query
pub fn lt<K, V>(key: K, value: V) -> Query
Create a new query that matches documents based on less than match.
use deeb_core::database::query::Query;
let query = Query::lt("age", 30);Sourcepub fn lte<K, V>(key: K, value: V) -> Query
pub fn lte<K, V>(key: K, value: V) -> Query
Create a new query that matches documents based on less than or equal match.
use deeb_core::database::query::Query;
let query = Query::lte("age", 30);Sourcepub fn gt<K, V>(key: K, value: V) -> Query
pub fn gt<K, V>(key: K, value: V) -> Query
Create a new query that matches documents based on greater than match.
use deeb_core::database::query::Query;
let query = Query::gt("age", 30);Sourcepub fn gte<K, V>(key: K, value: V) -> Query
pub fn gte<K, V>(key: K, value: V) -> Query
Create a new query that matches documents based on greater than or equal match.
use deeb_core::database::query::Query;
let query = Query::gte("age", 30);Sourcepub fn all() -> Query
pub fn all() -> Query
Create a new query that matches all documents.
use deeb_core::database::query::Query;
let query = Query::all();Sourcepub fn associated(entity: Entity, query: Query) -> Query
pub fn associated(entity: Entity, query: Query) -> Query
Create a new query that matches documents based on associated entity.
use deeb_core::database::query::Query;
use deeb_core::entity::Entity;
let user = Entity::new("user");
let comment = Entity::new("comment");
let query = Query::associated(comment, Query::eq("user_id", 1));pub fn associated_entities(&self) -> Vec<Entity>
Sourcepub fn matches(&self, value: &Value) -> Result<bool, Error>
pub fn matches(&self, value: &Value) -> Result<bool, Error>
Check if the query matches the value.
use deeb_core::database::query::Query;
use serde_json::json;
let query = Query::eq("name", "John");
let value = json!({"name": "John"});
let is_match = query.matches(&value).unwrap();
assert_eq!(is_match, true);