Skip to content

Commit

Permalink
Fix Build Issues
Browse files Browse the repository at this point in the history
  • Loading branch information
anshap1719 committed Nov 27, 2023
1 parent 1067f99 commit 921f67e
Show file tree
Hide file tree
Showing 4 changed files with 81 additions and 38 deletions.
4 changes: 4 additions & 0 deletions src/common.rs
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ impl<'a> Text<'a> for std::borrow::Cow<'a, str> {
}

#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(Serialize))]
pub struct Directive<'a, T: Text<'a>> {
pub position: Pos,
pub name: T::Value,
Expand All @@ -65,11 +66,13 @@ pub struct Directive<'a, T: Text<'a>> {
/// in `serde_json`: encapsulate value in new-type, allowing type
/// to be extended later.
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(Serialize))]
// we use i64 as a reference implementation: graphql-js thinks even 32bit
// integers is enough. We might consider lift this limit later though
pub struct Number(pub(crate) i64);

#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(Serialize))]
pub enum Value<'a, T: Text<'a>> {
Variable(T::Value),
Int(Number),
Expand Down Expand Up @@ -103,6 +106,7 @@ impl<'a, T: Text<'a>> Value<'a, T> {
}

#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(Serialize))]
pub enum Type<'a, T: Text<'a>> {
NamedType(T::Value),
ListType(Box<Type<'a, T>>),
Expand Down
4 changes: 3 additions & 1 deletion src/position.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
#[cfg(feature = "serde")]
use serde::Serialize;
use std::fmt;

/// Original position of element in source code
#[derive(PartialOrd, Ord, PartialEq, Eq, Clone, Copy, Default, Hash, Serialize)]
#[derive(PartialOrd, Ord, PartialEq, Eq, Clone, Copy, Default, Hash)]
#[cfg_attr(feature = "serde", derive(Serialize))]
pub struct Pos {
/// One-based line number
pub line: usize,
Expand Down
43 changes: 29 additions & 14 deletions src/query/ast.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,15 @@
//!
//! [graphql grammar]: http://facebook.github.io/graphql/October2016/#sec-Appendix-Grammar-Summary
//!
#[cfg(feature = "serde")]
use serde::Serialize;

pub use crate::common::{Directive, Number, Text, Type, Value};
use crate::position::Pos;

/// Root of query data
#[derive(Debug, Clone, PartialEq, Serialize)]
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(Serialize))]
pub struct Document<'a, T: Text<'a>> {
pub definitions: Vec<Definition<'a, T>>,
}
Expand All @@ -35,13 +37,15 @@ impl<'a> Document<'a, String> {
}
}

#[derive(Debug, Clone, PartialEq, Serialize)]
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(Serialize))]
pub enum Definition<'a, T: Text<'a>> {
Operation(OperationDefinition<'a, T>),
Fragment(FragmentDefinition<'a, T>),
}

#[derive(Debug, Clone, PartialEq, Serialize)]
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(Serialize))]
pub struct FragmentDefinition<'a, T: Text<'a>> {
pub position: Pos,
pub name: T::Value,
Expand All @@ -50,15 +54,17 @@ pub struct FragmentDefinition<'a, T: Text<'a>> {
pub selection_set: SelectionSet<'a, T>,
}

#[derive(Debug, Clone, PartialEq, Serialize)]
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(Serialize))]
pub enum OperationDefinition<'a, T: Text<'a>> {
SelectionSet(SelectionSet<'a, T>),
Query(Query<'a, T>),
Mutation(Mutation<'a, T>),
Subscription(Subscription<'a, T>),
}

#[derive(Debug, Clone, PartialEq, Serialize)]
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(Serialize))]
pub struct Query<'a, T: Text<'a>> {
pub position: Pos,
pub name: Option<T::Value>,
Expand All @@ -67,7 +73,8 @@ pub struct Query<'a, T: Text<'a>> {
pub selection_set: SelectionSet<'a, T>,
}

#[derive(Debug, Clone, PartialEq, Serialize)]
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(Serialize))]
pub struct Mutation<'a, T: Text<'a>> {
pub position: Pos,
pub name: Option<T::Value>,
Expand All @@ -76,7 +83,8 @@ pub struct Mutation<'a, T: Text<'a>> {
pub selection_set: SelectionSet<'a, T>,
}

#[derive(Debug, Clone, PartialEq, Serialize)]
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(Serialize))]
pub struct Subscription<'a, T: Text<'a>> {
pub position: Pos,
pub name: Option<T::Value>,
Expand All @@ -85,28 +93,32 @@ pub struct Subscription<'a, T: Text<'a>> {
pub selection_set: SelectionSet<'a, T>,
}

#[derive(Debug, Clone, PartialEq, Serialize)]
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(Serialize))]
pub struct SelectionSet<'a, T: Text<'a>> {
pub span: (Pos, Pos),
pub items: Vec<Selection<'a, T>>,
}

#[derive(Debug, Clone, PartialEq, Serialize)]
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(Serialize))]
pub struct VariableDefinition<'a, T: Text<'a>> {
pub position: Pos,
pub name: T::Value,
pub var_type: Type<'a, T>,
pub default_value: Option<Value<'a, T>>,
}

#[derive(Debug, Clone, PartialEq, Serialize)]
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(Serialize))]
pub enum Selection<'a, T: Text<'a>> {
Field(Field<'a, T>),
FragmentSpread(FragmentSpread<'a, T>),
InlineFragment(InlineFragment<'a, T>),
}

#[derive(Debug, Clone, PartialEq, Serialize)]
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(Serialize))]
pub struct Field<'a, T: Text<'a>> {
pub position: Pos,
pub alias: Option<T::Value>,
Expand All @@ -116,19 +128,22 @@ pub struct Field<'a, T: Text<'a>> {
pub selection_set: SelectionSet<'a, T>,
}

#[derive(Debug, Clone, PartialEq, Serialize)]
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(Serialize))]
pub struct FragmentSpread<'a, T: Text<'a>> {
pub position: Pos,
pub fragment_name: T::Value,
pub directives: Vec<Directive<'a, T>>,
}

#[derive(Debug, Clone, PartialEq, Serialize)]
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(Serialize))]
pub enum TypeCondition<'a, T: Text<'a>> {
On(T::Value),
}

#[derive(Debug, Clone, PartialEq, Serialize)]
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(Serialize))]
pub struct InlineFragment<'a, T: Text<'a>> {
pub position: Pos,
pub type_condition: Option<TypeCondition<'a, T>>,
Expand Down
Loading

0 comments on commit 921f67e

Please sign in to comment.