nakago_async_graphql/
utils.rs1use async_graphql::{Error, ErrorExtensions, MaybeUndefined};
2use fake::{Dummy, Fake, Faker};
3use hyper::StatusCode;
4use rand::Rng;
5
6pub fn graphql_error(message: &'static str, code: StatusCode) -> Error {
8 anyhow!(message).extend_with(|_err, e| {
9 e.set("code", code.as_u16());
10 e.set("message", code.to_string());
11 })
12}
13
14pub fn as_graphql_error(
17 message: &'static str,
18 code: StatusCode,
19) -> Box<dyn Fn(anyhow::Error) -> Error> {
20 Box::new(move |err| {
21 anyhow!(message).extend_with(|_err, e| {
22 e.set("code", code.as_u16());
23 e.set("message", code.to_string());
24 e.set("reason", err.to_string());
25 })
26 })
27}
28
29pub fn dummy_maybe_undef<T, R: Rng + ?Sized>(config: &Faker, rng: &mut R) -> MaybeUndefined<T>
31where
32 T: Dummy<Faker>,
33{
34 match (0..2).fake_with_rng(rng) {
35 0 => MaybeUndefined::Undefined,
36 1 => MaybeUndefined::Null,
37 _ => MaybeUndefined::Value(T::dummy_with_rng(config, rng)),
38 }
39}