juniper/integrations/
uuid.rs1use crate::{ScalarValue, graphql_scalar};
13
14#[graphql_scalar]
24#[graphql(
25 name = "UUID",
26 with = uuid_scalar,
27 to_output_with = ScalarValue::from_displayable,
28 parse_token(String),
29 specified_by_url = "https://graphql-scalars.dev/docs/scalars/uuid",
30)]
31type Uuid = uuid::Uuid;
32
33mod uuid_scalar {
34 use super::Uuid;
35
36 pub(super) fn from_input(s: &str) -> Result<Uuid, Box<str>> {
37 Uuid::parse_str(s).map_err(|e| format!("Failed to parse `UUID`: {e}").into())
38 }
39}
40
41#[cfg(test)]
42mod test {
43 use uuid::Uuid;
44
45 use crate::{FromInputValue, InputValue, graphql_input_value};
46
47 #[test]
48 fn uuid_from_input() {
49 let raw = "123e4567-e89b-12d3-a456-426655440000";
50 let input: InputValue = graphql_input_value!((raw));
51
52 let parsed: Uuid = FromInputValue::from_input_value(&input).unwrap();
53 let id = Uuid::parse_str(raw).unwrap();
54
55 assert_eq!(parsed, id);
56 }
57}