wundergraph/query_builder/types/field_value_resolver/
mod.rs1use super::WundergraphValue;
2use crate::error::Result;
3use crate::scalar::WundergraphScalarValue;
4use diesel::backend::Backend;
5use juniper::{Executor, Selection};
6
7mod direct_resolver;
8mod has_one_resolver;
9
10pub trait ResolveWundergraphFieldValue<DB: Backend, Ctx>: WundergraphValue + Sized {
13 type Resolver: FieldValueResolver<Self, DB, Ctx>;
16}
17
18pub trait FieldValueResolver<T, DB, Ctx>
19where
20 T: WundergraphValue,
21 DB: Backend,
22{
23 fn new(elements: usize) -> Self;
24
25 fn resolve_value(
26 &mut self,
27 value: T::PlaceHolder,
28 look_ahead: &juniper::LookAheadSelection<'_, WundergraphScalarValue>,
29 selection: Option<&'_ [Selection<'_, WundergraphScalarValue>]>,
30 executor: &Executor<'_, Ctx, WundergraphScalarValue>,
31 ) -> Result<Option<juniper::Value<WundergraphScalarValue>>>;
32
33 fn finalize(
34 self,
35 global_args: &[juniper::LookAheadArgument<WundergraphScalarValue>],
36 look_ahead: &juniper::LookAheadSelection<'_, WundergraphScalarValue>,
37 selection: Option<&'_ [Selection<'_, WundergraphScalarValue>]>,
38 executor: &Executor<'_, Ctx, WundergraphScalarValue>,
39 ) -> Result<Option<Vec<juniper::Value<WundergraphScalarValue>>>>;
40}