Derive Macro edgedb_query_derive::FromFileQuery
source · #[derive(FromFileQuery)]
{
// Attributes available to this derive:
#[src]
#[param]
}
Expand description
FromFileQuery 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::FromFileQuery;
use edgedb_query::{ToEdgeQl, ToEdgeQuery, EdgeQuery};
#[derive(FromFileQuery)]
pub struct AddUser {
#[src("edgedb-query-derive/test/from_file_query/add_user.edgeql")]
pub __meta__: (),
#[param("user_name")]
pub name: String,
pub age: i8,
}
fn main() {
let user = AddUser {
__meta__: (),
name: "Joe".to_string(),
age: 35
};
let ql = include_str!("add_user.edgeql");
let query: EdgeQuery = user.to_edge_query();
assert_eq!(ql, query.query.as_str());
if let Some(Value::Object { shape, fields }) = query.args {
crate::test_utils::check_shape(
&shape,
vec!["user_name", "age"],
);
assert_eq!(
fields,
vec![
Some(Value::Str(user.name)),
Some(Value::Int16(user.age as i16)),
]
);
} else {
assert!(false)
}
}