rusty_gql/resolver/
number.rs1use 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}