pub trait ValidationDatabase: Database + HasQueryGroup<ValidationStorage> + Upcast<dyn HirDatabase> + InputDatabase + AstDatabase + HirDatabase {
Show 52 methods
// Required methods
fn validate(&self) -> Vec<ApolloDiagnostic>;
fn validate_type_system(&self) -> Vec<ApolloDiagnostic>;
fn validate_executable(&self, key0: FileId) -> Vec<ApolloDiagnostic>;
fn validate_standalone_executable(
&self,
key0: FileId
) -> Vec<ApolloDiagnostic>;
fn validate_type_system_names(&self) -> Vec<ApolloDiagnostic>;
fn validate_executable_names(&self, key0: FileId) -> Vec<ApolloDiagnostic>;
fn validate_schema_definition(
&self,
key0: Arc<SchemaDefinition>
) -> Vec<ApolloDiagnostic>;
fn validate_root_operation_definitions(
&self,
key0: Vec<RootOperationTypeDefinition>
) -> Vec<ApolloDiagnostic>;
fn validate_scalar_definitions(&self) -> Vec<ApolloDiagnostic>;
fn validate_scalar_definition(
&self,
key0: Arc<ScalarTypeDefinition>
) -> Vec<ApolloDiagnostic>;
fn validate_enum_definitions(&self) -> Vec<ApolloDiagnostic>;
fn validate_enum_definition(
&self,
key0: Arc<EnumTypeDefinition>
) -> Vec<ApolloDiagnostic>;
fn validate_enum_value(
&self,
key0: EnumValueDefinition
) -> Vec<ApolloDiagnostic>;
fn validate_union_definitions(&self) -> Vec<ApolloDiagnostic>;
fn validate_union_definition(
&self,
key0: Arc<UnionTypeDefinition>
) -> Vec<ApolloDiagnostic>;
fn validate_interface_definitions(&self) -> Vec<ApolloDiagnostic>;
fn validate_interface_definition(
&self,
key0: Arc<InterfaceTypeDefinition>
) -> Vec<ApolloDiagnostic>;
fn validate_implements_interfaces(
&self,
key0: String,
key1: Vec<ImplementsInterface>
) -> Vec<ApolloDiagnostic>;
fn validate_directive_definitions(&self) -> Vec<ApolloDiagnostic>;
fn validate_directives(
&self,
key0: Vec<Directive>,
key1: DirectiveLocation,
key2: Arc<Vec<VariableDefinition>>
) -> Vec<ApolloDiagnostic>;
fn validate_input_object_definitions(&self) -> Vec<ApolloDiagnostic>;
fn validate_input_object_definition(
&self,
key0: Arc<InputObjectTypeDefinition>
) -> Vec<ApolloDiagnostic>;
fn validate_input_values(
&self,
key0: Arc<Vec<InputValueDefinition>>,
key1: DirectiveLocation
) -> Vec<ApolloDiagnostic>;
fn validate_object_type_definitions(&self) -> Vec<ApolloDiagnostic>;
fn validate_extensions(&self) -> Vec<ApolloDiagnostic>;
fn validate_subscription_operations(
&self,
key0: Arc<Vec<Arc<OperationDefinition>>>
) -> Vec<ApolloDiagnostic>;
fn validate_query_operations(
&self,
key0: Arc<Vec<Arc<OperationDefinition>>>
) -> Vec<ApolloDiagnostic>;
fn validate_mutation_operations(
&self,
key0: Arc<Vec<Arc<OperationDefinition>>>
) -> Vec<ApolloDiagnostic>;
fn validate_object_type_definition(
&self,
key0: Arc<ObjectTypeDefinition>
) -> Vec<ApolloDiagnostic>;
fn validate_field_definitions(
&self,
key0: Vec<FieldDefinition>
) -> Vec<ApolloDiagnostic>;
fn validate_field_definition(
&self,
key0: FieldDefinition
) -> Vec<ApolloDiagnostic>;
fn validate_field(
&self,
key0: Arc<Field>,
key1: OperationValidationConfig
) -> Vec<ApolloDiagnostic>;
fn validate_leaf_field_selection(
&self,
key0: Arc<Field>,
key1: Type
) -> Result<(), ApolloDiagnostic>;
fn validate_arguments_definition(
&self,
key0: ArgumentsDefinition,
key1: DirectiveLocation
) -> Vec<ApolloDiagnostic>;
fn validate_arguments(&self, key0: Vec<Argument>) -> Vec<ApolloDiagnostic>;
fn validate_operation_definitions(
&self,
key0: FileId
) -> Vec<ApolloDiagnostic>;
fn get_possible_types(&self, key0: TypeDefinition) -> Vec<TypeDefinition>;
fn validate_fragment_selection(
&self,
key0: FragmentSelection
) -> Vec<ApolloDiagnostic>;
fn validate_fragment_spread(
&self,
key0: Arc<FragmentSpread>,
key1: OperationValidationConfig
) -> Vec<ApolloDiagnostic>;
fn validate_inline_fragment(
&self,
key0: Arc<InlineFragment>,
key1: OperationValidationConfig
) -> Vec<ApolloDiagnostic>;
fn validate_fragment_definition(
&self,
key0: Arc<FragmentDefinition>,
key1: OperationValidationConfig
) -> Vec<ApolloDiagnostic>;
fn validate_fragment_cycles(
&self,
key0: Arc<FragmentDefinition>
) -> Vec<ApolloDiagnostic>;
fn validate_fragment_type_condition(
&self,
key0: String,
key1: HirNodeLocation
) -> Vec<ApolloDiagnostic>;
fn validate_fragment_used(
&self,
key0: Arc<FragmentDefinition>,
key1: FileId
) -> Vec<ApolloDiagnostic>;
fn validate_selection_set(
&self,
key0: SelectionSet,
key1: OperationValidationConfig
) -> Vec<ApolloDiagnostic>;
fn validate_selection(
&self,
key0: Arc<Vec<Selection>>,
key1: OperationValidationConfig
) -> Vec<ApolloDiagnostic>;
fn validate_variable_definitions(
&self,
key0: Arc<Vec<VariableDefinition>>,
key1: bool
) -> Vec<ApolloDiagnostic>;
fn validate_unused_variable(
&self,
key0: Arc<OperationDefinition>
) -> Vec<ApolloDiagnostic>;
fn validate_variable_usage(
&self,
key0: InputValueDefinition,
key1: Arc<Vec<VariableDefinition>>,
key2: Argument
) -> Result<(), ApolloDiagnostic>;
fn validate_values(
&self,
key0: &Type,
key1: &Argument,
key2: Arc<Vec<VariableDefinition>>
) -> Result<(), Vec<ApolloDiagnostic>>;
fn same_response_shape(
&self,
key0: Arc<Field>,
key1: Arc<Field>
) -> Result<(), ApolloDiagnostic>;
fn fields_in_set_can_merge(
&self,
key0: SelectionSet
) -> Result<(), Vec<ApolloDiagnostic>>;
}
Required Methods§
sourcefn validate(&self) -> Vec<ApolloDiagnostic>
fn validate(&self) -> Vec<ApolloDiagnostic>
Validate all documents.
sourcefn validate_type_system(&self) -> Vec<ApolloDiagnostic>
fn validate_type_system(&self) -> Vec<ApolloDiagnostic>
Validate the type system, combined of all type system documents known to the compiler.
sourcefn validate_executable(&self, key0: FileId) -> Vec<ApolloDiagnostic>
fn validate_executable(&self, key0: FileId) -> Vec<ApolloDiagnostic>
Validate an executable document.
sourcefn validate_standalone_executable(&self, key0: FileId) -> Vec<ApolloDiagnostic>
fn validate_standalone_executable(&self, key0: FileId) -> Vec<ApolloDiagnostic>
Validate a standalone executable document, without knowledge of the type system it executes against.
This runs a subset of the validations from validate_executable
.
sourcefn validate_type_system_names(&self) -> Vec<ApolloDiagnostic>
fn validate_type_system_names(&self) -> Vec<ApolloDiagnostic>
Validate the names of all type definitions known to the compiler are unique.
sourcefn validate_executable_names(&self, key0: FileId) -> Vec<ApolloDiagnostic>
fn validate_executable_names(&self, key0: FileId) -> Vec<ApolloDiagnostic>
Validate names of operations and fragments in an executable document are unique.
fn validate_schema_definition( &self, key0: Arc<SchemaDefinition> ) -> Vec<ApolloDiagnostic>
fn validate_root_operation_definitions( &self, key0: Vec<RootOperationTypeDefinition> ) -> Vec<ApolloDiagnostic>
fn validate_scalar_definitions(&self) -> Vec<ApolloDiagnostic>
fn validate_scalar_definition( &self, key0: Arc<ScalarTypeDefinition> ) -> Vec<ApolloDiagnostic>
fn validate_enum_definitions(&self) -> Vec<ApolloDiagnostic>
fn validate_enum_definition( &self, key0: Arc<EnumTypeDefinition> ) -> Vec<ApolloDiagnostic>
fn validate_enum_value( &self, key0: EnumValueDefinition ) -> Vec<ApolloDiagnostic>
fn validate_union_definitions(&self) -> Vec<ApolloDiagnostic>
fn validate_union_definition( &self, key0: Arc<UnionTypeDefinition> ) -> Vec<ApolloDiagnostic>
fn validate_interface_definitions(&self) -> Vec<ApolloDiagnostic>
fn validate_interface_definition( &self, key0: Arc<InterfaceTypeDefinition> ) -> Vec<ApolloDiagnostic>
fn validate_implements_interfaces( &self, key0: String, key1: Vec<ImplementsInterface> ) -> Vec<ApolloDiagnostic>
fn validate_directive_definitions(&self) -> Vec<ApolloDiagnostic>
fn validate_directives( &self, key0: Vec<Directive>, key1: DirectiveLocation, key2: Arc<Vec<VariableDefinition>> ) -> Vec<ApolloDiagnostic>
fn validate_input_object_definitions(&self) -> Vec<ApolloDiagnostic>
fn validate_input_object_definition( &self, key0: Arc<InputObjectTypeDefinition> ) -> Vec<ApolloDiagnostic>
fn validate_input_values( &self, key0: Arc<Vec<InputValueDefinition>>, key1: DirectiveLocation ) -> Vec<ApolloDiagnostic>
fn validate_object_type_definitions(&self) -> Vec<ApolloDiagnostic>
fn validate_extensions(&self) -> Vec<ApolloDiagnostic>
fn validate_subscription_operations( &self, key0: Arc<Vec<Arc<OperationDefinition>>> ) -> Vec<ApolloDiagnostic>
fn validate_query_operations( &self, key0: Arc<Vec<Arc<OperationDefinition>>> ) -> Vec<ApolloDiagnostic>
fn validate_mutation_operations( &self, key0: Arc<Vec<Arc<OperationDefinition>>> ) -> Vec<ApolloDiagnostic>
fn validate_object_type_definition( &self, key0: Arc<ObjectTypeDefinition> ) -> Vec<ApolloDiagnostic>
fn validate_field_definitions( &self, key0: Vec<FieldDefinition> ) -> Vec<ApolloDiagnostic>
fn validate_field_definition( &self, key0: FieldDefinition ) -> Vec<ApolloDiagnostic>
fn validate_field( &self, key0: Arc<Field>, key1: OperationValidationConfig ) -> Vec<ApolloDiagnostic>
fn validate_leaf_field_selection( &self, key0: Arc<Field>, key1: Type ) -> Result<(), ApolloDiagnostic>
fn validate_arguments_definition( &self, key0: ArgumentsDefinition, key1: DirectiveLocation ) -> Vec<ApolloDiagnostic>
fn validate_arguments(&self, key0: Vec<Argument>) -> Vec<ApolloDiagnostic>
fn validate_operation_definitions(&self, key0: FileId) -> Vec<ApolloDiagnostic>
sourcefn get_possible_types(&self, key0: TypeDefinition) -> Vec<TypeDefinition>
fn get_possible_types(&self, key0: TypeDefinition) -> Vec<TypeDefinition>
Given a type definition, find all the types that can be used for fragment spreading.
Spec: https://spec.graphql.org/October2021/#GetPossibleTypes()
fn validate_fragment_selection( &self, key0: FragmentSelection ) -> Vec<ApolloDiagnostic>
fn validate_fragment_spread( &self, key0: Arc<FragmentSpread>, key1: OperationValidationConfig ) -> Vec<ApolloDiagnostic>
fn validate_inline_fragment( &self, key0: Arc<InlineFragment>, key1: OperationValidationConfig ) -> Vec<ApolloDiagnostic>
fn validate_fragment_definition( &self, key0: Arc<FragmentDefinition>, key1: OperationValidationConfig ) -> Vec<ApolloDiagnostic>
fn validate_fragment_cycles( &self, key0: Arc<FragmentDefinition> ) -> Vec<ApolloDiagnostic>
fn validate_fragment_type_condition( &self, key0: String, key1: HirNodeLocation ) -> Vec<ApolloDiagnostic>
fn validate_fragment_used( &self, key0: Arc<FragmentDefinition>, key1: FileId ) -> Vec<ApolloDiagnostic>
fn validate_selection_set( &self, key0: SelectionSet, key1: OperationValidationConfig ) -> Vec<ApolloDiagnostic>
fn validate_selection( &self, key0: Arc<Vec<Selection>>, key1: OperationValidationConfig ) -> Vec<ApolloDiagnostic>
fn validate_variable_definitions( &self, key0: Arc<Vec<VariableDefinition>>, key1: bool ) -> Vec<ApolloDiagnostic>
fn validate_unused_variable( &self, key0: Arc<OperationDefinition> ) -> Vec<ApolloDiagnostic>
fn validate_variable_usage( &self, key0: InputValueDefinition, key1: Arc<Vec<VariableDefinition>>, key2: Argument ) -> Result<(), ApolloDiagnostic>
fn validate_values( &self, key0: &Type, key1: &Argument, key2: Arc<Vec<VariableDefinition>> ) -> Result<(), Vec<ApolloDiagnostic>>
sourcefn same_response_shape(
&self,
key0: Arc<Field>,
key1: Arc<Field>
) -> Result<(), ApolloDiagnostic>
fn same_response_shape( &self, key0: Arc<Field>, key1: Arc<Field> ) -> Result<(), ApolloDiagnostic>
Check if two fields will output the same type.
If the two fields output different types, returns an Err
containing diagnostic information.
To simply check if outputs are the same, you can use .is_ok()
:
let is_same = db.same_response_shape(field_a, field_b).is_ok();
// `is_same` is `bool`
Spec: https://spec.graphql.org/October2021/#SameResponseShape()
sourcefn fields_in_set_can_merge(
&self,
key0: SelectionSet
) -> Result<(), Vec<ApolloDiagnostic>>
fn fields_in_set_can_merge( &self, key0: SelectionSet ) -> Result<(), Vec<ApolloDiagnostic>>
Check if the fields in a given selection set can be merged.
If the fields cannot be merged, returns an Err
containing diagnostic information.
Spec: https://spec.graphql.org/October2021/#FieldsInSetCanMerge()