rusty_gql/resolver/
number.rs

1use serde_json::Number;
2
3use crate::{
4    CollectFields, Context, FieldResolver, GqlValue, ResolverResult, SelectionSetContext,
5    SelectionSetResolver,
6};
7
8#[async_trait::async_trait]
9impl FieldResolver for i8 {
10    async fn resolve_field(&self, _ctx: &Context<'_>) -> ResolverResult<Option<GqlValue>> {
11        Ok(Some(GqlValue::Number(Number::from(*self))))
12    }
13    fn type_name() -> String {
14        "Int".to_string()
15    }
16}
17
18impl CollectFields for i8 {}
19
20#[async_trait::async_trait]
21impl SelectionSetResolver for i8 {
22    async fn resolve_selection_set(
23        &self,
24        _ctx: &SelectionSetContext<'_>,
25    ) -> ResolverResult<GqlValue> {
26        Ok(GqlValue::Number(Number::from(*self)))
27    }
28}
29
30#[async_trait::async_trait]
31impl FieldResolver for i16 {
32    async fn resolve_field(&self, _ctx: &Context<'_>) -> ResolverResult<Option<GqlValue>> {
33        Ok(Some(GqlValue::Number(Number::from(*self))))
34    }
35    fn type_name() -> String {
36        "Int".to_string()
37    }
38}
39
40impl CollectFields for i16 {}
41
42#[async_trait::async_trait]
43impl SelectionSetResolver for i16 {
44    async fn resolve_selection_set(
45        &self,
46        _ctx: &SelectionSetContext<'_>,
47    ) -> ResolverResult<GqlValue> {
48        Ok(GqlValue::Number(Number::from(*self)))
49    }
50}
51
52#[async_trait::async_trait]
53impl FieldResolver for i32 {
54    async fn resolve_field(&self, _ctx: &Context<'_>) -> ResolverResult<Option<GqlValue>> {
55        Ok(Some(GqlValue::Number(Number::from(*self))))
56    }
57    fn type_name() -> String {
58        "Int".to_string()
59    }
60}
61
62impl CollectFields for i32 {}
63
64#[async_trait::async_trait]
65impl SelectionSetResolver for i32 {
66    async fn resolve_selection_set(
67        &self,
68        _ctx: &SelectionSetContext<'_>,
69    ) -> ResolverResult<GqlValue> {
70        Ok(GqlValue::Number(Number::from(*self)))
71    }
72}
73
74#[async_trait::async_trait]
75impl FieldResolver for i64 {
76    async fn resolve_field(&self, _ctx: &Context<'_>) -> ResolverResult<Option<GqlValue>> {
77        Ok(Some(GqlValue::Number(Number::from(*self))))
78    }
79    fn type_name() -> String {
80        "Int".to_string()
81    }
82}
83
84impl CollectFields for i64 {}
85
86#[async_trait::async_trait]
87impl SelectionSetResolver for i64 {
88    async fn resolve_selection_set(
89        &self,
90        _ctx: &SelectionSetContext<'_>,
91    ) -> ResolverResult<GqlValue> {
92        Ok(GqlValue::Number(Number::from(*self)))
93    }
94}
95
96#[async_trait::async_trait]
97impl FieldResolver for u8 {
98    async fn resolve_field(&self, _ctx: &Context<'_>) -> ResolverResult<Option<GqlValue>> {
99        Ok(Some(GqlValue::Number(Number::from(*self))))
100    }
101    fn type_name() -> String {
102        "Int".to_string()
103    }
104}
105
106impl CollectFields for u8 {}
107
108#[async_trait::async_trait]
109impl SelectionSetResolver for u8 {
110    async fn resolve_selection_set(
111        &self,
112        _ctx: &SelectionSetContext<'_>,
113    ) -> ResolverResult<GqlValue> {
114        Ok(GqlValue::Number(Number::from(*self)))
115    }
116}
117#[async_trait::async_trait]
118impl FieldResolver for u16 {
119    async fn resolve_field(&self, _ctx: &Context<'_>) -> ResolverResult<Option<GqlValue>> {
120        Ok(Some(GqlValue::Number(Number::from(*self))))
121    }
122    fn type_name() -> String {
123        "Int".to_string()
124    }
125}
126
127impl CollectFields for u16 {}
128
129#[async_trait::async_trait]
130impl SelectionSetResolver for u16 {
131    async fn resolve_selection_set(
132        &self,
133        _ctx: &SelectionSetContext<'_>,
134    ) -> ResolverResult<GqlValue> {
135        Ok(GqlValue::Number(Number::from(*self)))
136    }
137}
138
139#[async_trait::async_trait]
140impl FieldResolver for u32 {
141    async fn resolve_field(&self, _ctx: &Context<'_>) -> ResolverResult<Option<GqlValue>> {
142        Ok(Some(GqlValue::Number(Number::from(*self))))
143    }
144    fn type_name() -> String {
145        "Int".to_string()
146    }
147}
148
149impl CollectFields for u32 {}
150
151#[async_trait::async_trait]
152impl SelectionSetResolver for u32 {
153    async fn resolve_selection_set(
154        &self,
155        _ctx: &SelectionSetContext<'_>,
156    ) -> ResolverResult<GqlValue> {
157        Ok(GqlValue::Number(Number::from(*self)))
158    }
159}
160
161#[async_trait::async_trait]
162impl FieldResolver for u64 {
163    async fn resolve_field(&self, _ctx: &Context<'_>) -> ResolverResult<Option<GqlValue>> {
164        Ok(Some(GqlValue::Number(Number::from(*self))))
165    }
166    fn type_name() -> String {
167        "Int".to_string()
168    }
169}
170
171impl CollectFields for u64 {}
172
173#[async_trait::async_trait]
174impl SelectionSetResolver for u64 {
175    async fn resolve_selection_set(
176        &self,
177        _ctx: &SelectionSetContext<'_>,
178    ) -> ResolverResult<GqlValue> {
179        Ok(GqlValue::Number(Number::from(*self)))
180    }
181}
182
183#[async_trait::async_trait]
184impl FieldResolver for usize {
185    async fn resolve_field(&self, _ctx: &Context<'_>) -> ResolverResult<Option<GqlValue>> {
186        Ok(Some(GqlValue::Number(Number::from(*self))))
187    }
188    fn type_name() -> String {
189        "Int".to_string()
190    }
191}
192
193impl CollectFields for usize {}
194
195#[async_trait::async_trait]
196impl SelectionSetResolver for usize {
197    async fn resolve_selection_set(
198        &self,
199        _ctx: &SelectionSetContext<'_>,
200    ) -> ResolverResult<GqlValue> {
201        Ok(GqlValue::Number(Number::from(*self)))
202    }
203}
204
205#[async_trait::async_trait]
206impl FieldResolver for isize {
207    async fn resolve_field(&self, _ctx: &Context<'_>) -> ResolverResult<Option<GqlValue>> {
208        Ok(Some(GqlValue::Number(Number::from(*self))))
209    }
210    fn type_name() -> String {
211        "Int".to_string()
212    }
213}
214
215impl CollectFields for isize {}
216
217#[async_trait::async_trait]
218impl SelectionSetResolver for isize {
219    async fn resolve_selection_set(
220        &self,
221        _ctx: &SelectionSetContext<'_>,
222    ) -> ResolverResult<GqlValue> {
223        Ok(GqlValue::Number(Number::from(*self)))
224    }
225}
226
227#[async_trait::async_trait]
228impl FieldResolver for f32 {
229    async fn resolve_field(&self, _ctx: &Context<'_>) -> ResolverResult<Option<GqlValue>> {
230        match Number::from_f64(*self as f64) {
231            Some(n) => Ok(Some(GqlValue::Number(n))),
232            None => Ok(Some(GqlValue::Null)),
233        }
234    }
235    fn type_name() -> String {
236        "Float".to_string()
237    }
238}
239
240impl CollectFields for f32 {}
241
242#[async_trait::async_trait]
243impl SelectionSetResolver for f32 {
244    async fn resolve_selection_set(
245        &self,
246        _ctx: &SelectionSetContext<'_>,
247    ) -> ResolverResult<GqlValue> {
248        match Number::from_f64(*self as f64) {
249            Some(n) => Ok(GqlValue::Number(n)),
250            None => Ok(GqlValue::Null),
251        }
252    }
253}
254
255#[async_trait::async_trait]
256impl FieldResolver for f64 {
257    async fn resolve_field(&self, _ctx: &Context<'_>) -> ResolverResult<Option<GqlValue>> {
258        match Number::from_f64(*self) {
259            Some(n) => Ok(Some(GqlValue::Number(n))),
260            None => Ok(Some(GqlValue::Null)),
261        }
262    }
263    fn type_name() -> String {
264        "Float".to_string()
265    }
266}
267
268impl CollectFields for f64 {}
269
270#[async_trait::async_trait]
271impl SelectionSetResolver for f64 {
272    async fn resolve_selection_set(
273        &self,
274        _ctx: &SelectionSetContext<'_>,
275    ) -> ResolverResult<GqlValue> {
276        match Number::from_f64(*self) {
277            Some(n) => Ok(GqlValue::Number(n)),
278            None => Ok(GqlValue::Null),
279        }
280    }
281}