Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 9 additions & 4 deletions bluejay-core/src/definition/arguments_definition.rs
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
use crate::definition::InputValueDefinition;
use crate::definition::{InputValueDefinition, SchemaDefinition};
use crate::AsIter;

pub trait ArgumentsDefinition: AsIter<Item = Self::ArgumentDefinition> {
type ArgumentDefinition: InputValueDefinition;
pub trait ArgumentsDefinition:
AsIter<Item = <Self::SchemaDefinition as SchemaDefinition>::InputValueDefinition>
{
type SchemaDefinition: SchemaDefinition;

fn get(&self, name: &str) -> Option<&Self::ArgumentDefinition> {
fn get(
&self,
name: &str,
) -> Option<&<Self::SchemaDefinition as SchemaDefinition>::InputValueDefinition> {
self.iter().find(|fd| fd.name() == name)
}
}
16 changes: 9 additions & 7 deletions bluejay-core/src/definition/directive.rs
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
use crate::definition::{DirectiveDefinition, SchemaDefinition};
use crate::definition::SchemaDefinition;

pub trait Directive: crate::Directive<true> {
type DirectiveDefinition: DirectiveDefinition;
type SchemaDefinition: SchemaDefinition;

fn definition<'a, S: SchemaDefinition<DirectiveDefinition = Self::DirectiveDefinition>>(
fn definition<'a>(
&'a self,
schema_definition: &'a S,
) -> &'a Self::DirectiveDefinition;
schema_definition: &'a Self::SchemaDefinition,
) -> &'a <Self::SchemaDefinition as SchemaDefinition>::DirectiveDefinition;
}

pub trait Directives: crate::Directives<true, Directive = <Self as Directives>::Directive> {
type Directive: Directive;
pub trait Directives:
crate::Directives<true, Directive = <Self::SchemaDefinition as SchemaDefinition>::Directive>
{
type SchemaDefinition: SchemaDefinition;
}
8 changes: 5 additions & 3 deletions bluejay-core/src/definition/directive_definition.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use crate::definition::ArgumentsDefinition;
use crate::definition::SchemaDefinition;
use crate::AsIter;
use strum::{AsRefStr, Display, EnumIter, EnumString, VariantNames};

Expand Down Expand Up @@ -47,12 +47,14 @@ impl DirectiveLocation {
}

pub trait DirectiveDefinition {
type ArgumentsDefinition: ArgumentsDefinition;
type SchemaDefinition: SchemaDefinition;
type DirectiveLocations: AsIter<Item = DirectiveLocation>;

fn description(&self) -> Option<&str>;
fn name(&self) -> &str;
fn arguments_definition(&self) -> Option<&Self::ArgumentsDefinition>;
fn arguments_definition(
&self,
) -> Option<&<Self::SchemaDefinition as SchemaDefinition>::ArgumentsDefinition>;
fn is_repeatable(&self) -> bool;
fn locations(&self) -> &Self::DirectiveLocations;
fn is_builtin(&self) -> bool;
Expand Down
12 changes: 8 additions & 4 deletions bluejay-core/src/definition/enum_type_definition.rs
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
use crate::definition::{EnumValueDefinitions, HasDirectives};
use crate::definition::{HasDirectives, SchemaDefinition};

pub trait EnumTypeDefinition: HasDirectives {
type EnumValueDefinitions: EnumValueDefinitions;
pub trait EnumTypeDefinition:
HasDirectives<Directives = <Self::SchemaDefinition as SchemaDefinition>::Directives>
{
type SchemaDefinition: SchemaDefinition;

fn description(&self) -> Option<&str>;
fn name(&self) -> &str;
fn enum_value_definitions(&self) -> &Self::EnumValueDefinitions;
fn enum_value_definitions(
&self,
) -> &<Self::SchemaDefinition as SchemaDefinition>::EnumValueDefinitions;
fn is_builtin(&self) -> bool;
}
8 changes: 6 additions & 2 deletions bluejay-core/src/definition/enum_value_definition.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
use crate::definition::HasDirectives;
use crate::definition::{HasDirectives, SchemaDefinition};

pub trait EnumValueDefinition:
HasDirectives<Directives = <Self::SchemaDefinition as SchemaDefinition>::Directives>
{
type SchemaDefinition: SchemaDefinition;

pub trait EnumValueDefinition: HasDirectives {
fn description(&self) -> Option<&str>;
fn name(&self) -> &str;
}
8 changes: 5 additions & 3 deletions bluejay-core/src/definition/enum_value_definitions.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
use crate::definition::EnumValueDefinition;
use crate::definition::SchemaDefinition;
use crate::AsIter;

pub trait EnumValueDefinitions: AsIter<Item = Self::EnumValueDefinition> {
type EnumValueDefinition: EnumValueDefinition;
pub trait EnumValueDefinitions:
AsIter<Item = <Self::SchemaDefinition as SchemaDefinition>::EnumValueDefinition>
{
type SchemaDefinition: SchemaDefinition;
}
15 changes: 9 additions & 6 deletions bluejay-core/src/definition/field_definition.rs
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
use crate::definition::{ArgumentsDefinition, HasDirectives, OutputType};
use crate::definition::{HasDirectives, SchemaDefinition};

pub trait FieldDefinition: HasDirectives {
type ArgumentsDefinition: ArgumentsDefinition;
type OutputType: OutputType;
pub trait FieldDefinition:
HasDirectives<Directives = <Self::SchemaDefinition as SchemaDefinition>::Directives>
{
type SchemaDefinition: SchemaDefinition;

fn description(&self) -> Option<&str>;
fn name(&self) -> &str;
fn arguments_definition(&self) -> Option<&Self::ArgumentsDefinition>;
fn r#type(&self) -> &Self::OutputType;
fn arguments_definition(
&self,
) -> Option<&<Self::SchemaDefinition as SchemaDefinition>::ArgumentsDefinition>;
fn r#type(&self) -> &<Self::SchemaDefinition as SchemaDefinition>::OutputType;
fn is_builtin(&self) -> bool;
}
13 changes: 9 additions & 4 deletions bluejay-core/src/definition/fields_definition.rs
Original file line number Diff line number Diff line change
@@ -1,14 +1,19 @@
use crate::definition::FieldDefinition;
use crate::definition::{FieldDefinition, SchemaDefinition};
use crate::AsIter;

pub trait FieldsDefinition: AsIter<Item = Self::FieldDefinition> {
type FieldDefinition: FieldDefinition;
pub trait FieldsDefinition:
AsIter<Item = <Self::SchemaDefinition as SchemaDefinition>::FieldDefinition>
{
type SchemaDefinition: SchemaDefinition;

fn contains_field(&self, name: &str) -> bool {
self.iter().any(|fd| fd.name() == name)
}

fn get(&self, name: &str) -> Option<&Self::FieldDefinition> {
fn get(
&self,
name: &str,
) -> Option<&<Self::SchemaDefinition as SchemaDefinition>::FieldDefinition> {
self.iter().find(|fd| fd.name() == name)
}
}
13 changes: 9 additions & 4 deletions bluejay-core/src/definition/input_fields_definition.rs
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
use crate::definition::InputValueDefinition;
use crate::definition::{InputValueDefinition, SchemaDefinition};
use crate::AsIter;

pub trait InputFieldsDefinition: AsIter<Item = Self::InputValueDefinition> {
type InputValueDefinition: InputValueDefinition;
pub trait InputFieldsDefinition:
AsIter<Item = <Self::SchemaDefinition as SchemaDefinition>::InputValueDefinition>
{
type SchemaDefinition: SchemaDefinition;

fn get(&self, name: &str) -> Option<&Self::InputValueDefinition> {
fn get(
&self,
name: &str,
) -> Option<&<Self::SchemaDefinition as SchemaDefinition>::InputValueDefinition> {
self.iter().find(|fd| fd.name() == name)
}
}
12 changes: 8 additions & 4 deletions bluejay-core/src/definition/input_object_type_definition.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
use crate::definition::{HasDirectives, InputFieldsDefinition};
use crate::definition::{HasDirectives, SchemaDefinition};

pub trait InputObjectTypeDefinition: HasDirectives {
type InputFieldsDefinition: InputFieldsDefinition;
pub trait InputObjectTypeDefinition:
HasDirectives<Directives = <Self::SchemaDefinition as SchemaDefinition>::Directives>
{
type SchemaDefinition: SchemaDefinition;

fn description(&self) -> Option<&str>;
fn name(&self) -> &str;
fn input_field_definitions(&self) -> &Self::InputFieldsDefinition;
fn input_field_definitions(
&self,
) -> &<Self::SchemaDefinition as SchemaDefinition>::InputFieldsDefinition;
}
Loading
Loading