#[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)
        }
 }