Derive Macro edgedb_query_derive::DeleteQuery
source · [−]#[derive(DeleteQuery)]
{
// Attributes available to this derive:
#[meta]
#[filter]
#[filters]
}
Expand description
UpdateQuery creates implementations of following traits for the annotated struct :
- edgedb_query::ToEdgeValue
- edgedb_query::ToEdgeQl
- edgedb_query::ToEdgeScalar
- edgedb_query::models::edge_query::ToEdgeQuery
- ToString
Usage
use edgedb_protocol::value::Value;
use edgedb_query_derive::{DeleteQuery, EdgedbFilters};
use edgedb_query::{*, queries::filter::Filter, models::{edge_query::{ToEdgeQuery, EdgeQuery}}};
#[derive(DeleteQuery)]
pub struct DeleteUsersByName {
#[meta(module="users", table="User")]
__meta__: (),
#[filters]
pub filters: NameFilter
}
#[derive(EdgedbFilters)]
pub struct NameFilter {
#[filter(operator="=")]
pub name: String
}
fn main() {
let del_users = DeleteUsersByName {
__meta__: (),
filters: NameFilter {
name: "Joe".to_owned()
}
};
let edge_query: EdgeQuery = del_users.to_edge_query();
assert_eq!(edge_query.query, "delete users::User filter users::User.name = (select <str>$name)");
if let Some(Value::Object { shape, fields }) = edge_query.args {
crate::test_utils::check_shape(&shape, vec!["name"]);
assert_eq!(fields, vec![
Some(Value::Str(del_users.filters.name ))
])
} else {
assert!(false)
}
}