async_graphql_value/
extensions.rs

1use std::{
2    collections::HashMap,
3    ops::{Deref, DerefMut},
4};
5
6use serde::{Deserialize, Deserializer, Serialize};
7
8/// Extensions of a query.
9#[derive(Debug, Clone, Default, Serialize, Eq, PartialEq)]
10#[serde(transparent)]
11pub struct Extensions(pub HashMap<String, crate::ConstValue>);
12
13impl<'de> Deserialize<'de> for Extensions {
14    fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
15        Ok(Self(
16            <Option<HashMap<_, _>>>::deserialize(deserializer)?.unwrap_or_default(),
17        ))
18    }
19}
20
21impl Deref for Extensions {
22    type Target = HashMap<String, crate::ConstValue>;
23
24    fn deref(&self) -> &Self::Target {
25        &self.0
26    }
27}
28
29impl DerefMut for Extensions {
30    fn deref_mut(&mut self) -> &mut Self::Target {
31        &mut self.0
32    }
33}