Struct fuel_indexer_lib::graphql::parser::ParsedGraphQLSchema   
source · pub struct ParsedGraphQLSchema { /* private fields */ }Expand description
A wrapper object used to encapsulate a lot of the boilerplate logic related to parsing schema, creating mappings of types, fields, objects, etc.
Ideally ParsedGraphQLSchema prevents from having to manually parse async_graphql_parser
TypeDefinitions in order to get metadata on the types (e.g., Is a foreign key? is a virtual type?
and so on).
Implementations§
source§impl ParsedGraphQLSchema
 
impl ParsedGraphQLSchema
sourcepub fn new(
    namespace: &str,
    identifier: &str,
    schema: Option<&GraphQLSchema>
) -> ParsedResult<Self>
 
pub fn new( namespace: &str, identifier: &str, schema: Option<&GraphQLSchema> ) -> ParsedResult<Self>
Create a new ParsedGraphQLSchema.
sourcepub fn identifier(&self) -> &str
 
pub fn identifier(&self) -> &str
Identifier of the indexer.
sourcepub fn objects(&self) -> &HashMap<String, ObjectType>
 
pub fn objects(&self) -> &HashMap<String, ObjectType>
Mapping of object names to objects.
sourcepub fn field_type_mappings(&self) -> &HashMap<String, String>
 
pub fn field_type_mappings(&self) -> &HashMap<String, String>
Mapping of fully qualified field names to their field types.
sourcepub fn field_type_optionality(&self) -> &HashMap<String, bool>
 
pub fn field_type_optionality(&self) -> &HashMap<String, bool>
A mapping of fully qualified field names to their respective optionalities.
sourcepub fn type_defs(&self) -> &HashMap<String, TypeDefinition>
 
pub fn type_defs(&self) -> &HashMap<String, TypeDefinition>
All type definitions in the schema.
sourcepub fn field_defs(&self) -> &HashMap<String, (FieldDefinition, String)>
 
pub fn field_defs(&self) -> &HashMap<String, (FieldDefinition, String)>
Mapping of fully qualified field names to their FieldDefinition and TypeDefinition name.
sourcepub fn foreign_key_mappings(
    &self
) -> &HashMap<String, HashMap<String, (String, String)>>
 
pub fn foreign_key_mappings( &self ) -> &HashMap<String, HashMap<String, (String, String)>>
All unique names of foreign key types in the schema.
sourcepub fn object_field_mappings(
    &self
) -> &HashMap<String, BTreeMap<String, String>>
 
pub fn object_field_mappings( &self ) -> &HashMap<String, BTreeMap<String, String>>
All objects and their field names and types, indexed by object name.
sourcepub fn join_table_meta(&self) -> &HashMap<String, Vec<JoinTableMeta>>
 
pub fn join_table_meta(&self) -> &HashMap<String, Vec<JoinTableMeta>>
Metadata related to many-to-many relationships in the GraphQL schema.
pub fn object_ordered_fields(&self) -> &HashMap<String, Vec<OrderedField>>
sourcepub fn scalar_type_for(&self, f: &FieldDefinition) -> String
 
pub fn scalar_type_for(&self, f: &FieldDefinition) -> String
Return the base scalar type for a given FieldDefinition.
sourcepub fn get_union(&self, name: &str) -> Option<&TypeDefinition>
 
pub fn get_union(&self, name: &str) -> Option<&TypeDefinition>
Return the TypeDefinition associated with a given union name.
sourcepub fn storage_backed_typedefs(&self) -> Vec<(&String, &TypeDefinition)>
 
pub fn storage_backed_typedefs(&self) -> Vec<(&String, &TypeDefinition)>
Return a list of all type definitions that will have a record or table in the database; functionally, this means any non-enum or internal type defintions.
sourcepub fn is_possible_foreign_key(&self, name: &str) -> bool
 
pub fn is_possible_foreign_key(&self, name: &str) -> bool
Whether the given field type name is a possible foreign key.
sourcepub fn is_virtual_typedef(&self, name: &str) -> bool
 
pub fn is_virtual_typedef(&self, name: &str) -> bool
Whether the given field type name is a type from which tables are not created.
sourcepub fn is_enum_typedef(&self, name: &str) -> bool
 
pub fn is_enum_typedef(&self, name: &str) -> bool
Whether the given field type name is an enum type.
sourcepub fn is_list_field_type(&self, name: &str) -> bool
 
pub fn is_list_field_type(&self, name: &str) -> bool
Whether the given field type name is a list type.
sourcepub fn is_list_typedef(&self, name: &str) -> bool
 
pub fn is_list_typedef(&self, name: &str) -> bool
Whether a given TypeDefinition contains a field that is a list type.
sourcepub fn is_union_typedef(&self, name: &str) -> bool
 
pub fn is_union_typedef(&self, name: &str) -> bool
Whether the given field type name is a union type.
pub fn is_internal_typedef(&self, name: &str) -> bool
sourcepub fn graphql_type(&self, cond: Option<&String>, name: &str) -> Option<&String>
 
pub fn graphql_type(&self, cond: Option<&String>, name: &str) -> Option<&String>
Return the GraphQL type for a given FieldDefinition or TypeDefinition name.
This serves as a convenience function so that the caller doesn’t have to
worry about handling the case in which cond is not present; for example,
cond is None when retrieving the type for a top-level entity in a query.
sourcepub fn has_type(&self, name: &str) -> bool
 
pub fn has_type(&self, name: &str) -> bool
Ensure the given type is included in this Schema’s types
sourcepub fn fully_qualified_namespace(&self) -> String
 
pub fn fully_qualified_namespace(&self) -> String
Fully qualified namespace for the indexer.
Trait Implementations§
source§impl Clone for ParsedGraphQLSchema
 
impl Clone for ParsedGraphQLSchema
source§fn clone(&self) -> ParsedGraphQLSchema
 
fn clone(&self) -> ParsedGraphQLSchema
1.0.0 · source§fn clone_from(&mut self, source: &Self)
 
fn clone_from(&mut self, source: &Self)
source. Read moresource§impl Debug for ParsedGraphQLSchema
 
impl Debug for ParsedGraphQLSchema
Auto Trait Implementations§
impl RefUnwindSafe for ParsedGraphQLSchema
impl Send for ParsedGraphQLSchema
impl Sync for ParsedGraphQLSchema
impl Unpin for ParsedGraphQLSchema
impl UnwindSafe for ParsedGraphQLSchema
Blanket Implementations§
§impl<T> AnyDebug for Twhere
    T: Any + Debug,
 
impl<T> AnyDebug for Twhere T: Any + Debug,
§fn as_any_ref(&self) -> &(dyn Any + 'static)
 
fn as_any_ref(&self) -> &(dyn Any + 'static)
Any.source§impl<T> BorrowMut<T> for Twhere
    T: ?Sized,
 
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
 
fn borrow_mut(&mut self) -> &mut T
§impl<T> Conv for T
 
impl<T> Conv for T
§impl<T> FmtForward for T
 
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
    Self: Binary,
 
fn fmt_binary(self) -> FmtBinary<Self>where Self: Binary,
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
    Self: Display,
 
fn fmt_display(self) -> FmtDisplay<Self>where Self: Display,
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
    Self: LowerExp,
 
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
    Self: LowerHex,
 
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
    Self: Octal,
 
fn fmt_octal(self) -> FmtOctal<Self>where Self: Octal,
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
    Self: Pointer,
 
fn fmt_pointer(self) -> FmtPointer<Self>where Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
    Self: UpperExp,
 
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
    Self: UpperHex,
 
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
    &'a Self: for<'a> IntoIterator,
 
fn fmt_list(self) -> FmtList<Self>where &'a Self: for<'a> IntoIterator,
source§impl<T> Instrument for T
 
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
 
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
 
fn in_current_span(self) -> Instrumented<Self>
§impl<T> Pipe for Twhere
    T: ?Sized,
 
impl<T> Pipe for Twhere T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
    Self: Sized,
 
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
    R: 'a,
 
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
    R: 'a,
 
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere
    Self: Borrow<B>,
    B: 'a + ?Sized,
    R: 'a,
 
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere Self: Borrow<B>, B: 'a + ?Sized, R: 'a,
§fn pipe_borrow_mut<'a, B, R>(
    &'a mut self,
    func: impl FnOnce(&'a mut B) -> R
) -> Rwhere
    Self: BorrowMut<B>,
    B: 'a + ?Sized,
    R: 'a,
 
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R ) -> Rwhere Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere
    Self: AsRef<U>,
    U: 'a + ?Sized,
    R: 'a,
 
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere Self: AsRef<U>, U: 'a + ?Sized, R: 'a,
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> Rwhere
    Self: AsMut<U>,
    U: 'a + ?Sized,
    R: 'a,
 
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> Rwhere Self: AsMut<U>, U: 'a + ?Sized, R: 'a,
self, then passes self.as_mut() into the pipe
function.§impl<T> StorageAsMut for T
 
impl<T> StorageAsMut for T
fn storage<Type>(&mut self) -> StorageMut<'_, Self, Type>where Type: Mappable,
fn storage_as_mut<Type>(&mut self) -> StorageMut<'_, Self, Type>where Type: Mappable,
§impl<T> StorageAsRef for T
 
impl<T> StorageAsRef for T
fn storage<Type>(&self) -> StorageRef<'_, Self, Type>where Type: Mappable,
fn storage_as_ref<Type>(&self) -> StorageRef<'_, Self, Type>where Type: Mappable,
§impl<T> Tap for T
 
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere
    Self: Borrow<B>,
    B: ?Sized,
 
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere Self: Borrow<B>, B: ?Sized,
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
    Self: BorrowMut<B>,
    B: ?Sized,
 
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere Self: BorrowMut<B>, B: ?Sized,
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere
    Self: AsRef<R>,
    R: ?Sized,
 
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere Self: AsRef<R>, R: ?Sized,
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
    Self: AsMut<R>,
    R: ?Sized,
 
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere Self: AsMut<R>, R: ?Sized,
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere
    Self: Deref<Target = T>,
    T: ?Sized,
 
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere Self: Deref<Target = T>, T: ?Sized,
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere
    Self: DerefMut<Target = T> + Deref,
    T: ?Sized,
 
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere Self: DerefMut<Target = T> + Deref, T: ?Sized,
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
 
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
 
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere
    Self: Borrow<B>,
    B: ?Sized,
 
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere Self: Borrow<B>, B: ?Sized,
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
    Self: BorrowMut<B>,
    B: ?Sized,
 
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere Self: BorrowMut<B>, B: ?Sized,
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere
    Self: AsRef<R>,
    R: ?Sized,
 
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere Self: AsRef<R>, R: ?Sized,
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
    Self: AsMut<R>,
    R: ?Sized,
 
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere Self: AsMut<R>, R: ?Sized,
.tap_ref_mut() only in debug builds, and is erased in release
builds.