...

Source file src/github.com/vektah/gqlparser/v2/ast/decode.go

Documentation: github.com/vektah/gqlparser/v2/ast

     1  package ast
     2  
     3  import (
     4  	"encoding/json"
     5  )
     6  
     7  func UnmarshalSelectionSet(b []byte) (SelectionSet, error) {
     8  	var tmp []json.RawMessage
     9  
    10  	if err := json.Unmarshal(b, &tmp); err != nil {
    11  		return nil, err
    12  	}
    13  
    14  	var result = make([]Selection, 0)
    15  	for _, item := range tmp {
    16  		var field Field
    17  		if err := json.Unmarshal(item, &field); err == nil {
    18  			result = append(result, &field)
    19  			continue
    20  		}
    21  		var fragmentSpread FragmentSpread
    22  		if err := json.Unmarshal(item, &fragmentSpread); err == nil {
    23  			result = append(result, &fragmentSpread)
    24  			continue
    25  		}
    26  		var inlineFragment InlineFragment
    27  		if err := json.Unmarshal(item, &inlineFragment); err == nil {
    28  			result = append(result, &inlineFragment)
    29  			continue
    30  		}
    31  	}
    32  
    33  	return result, nil
    34  }
    35  
    36  func (f *FragmentDefinition) UnmarshalJSON(b []byte) error {
    37  	var tmp map[string]json.RawMessage
    38  	if err := json.Unmarshal(b, &tmp); err != nil {
    39  		return err
    40  	}
    41  	for k := range tmp {
    42  		switch k {
    43  		case "Name":
    44  			err := json.Unmarshal(tmp[k], &f.Name)
    45  			if err != nil {
    46  				return err
    47  			}
    48  		case "VariableDefinition":
    49  			err := json.Unmarshal(tmp[k], &f.VariableDefinition)
    50  			if err != nil {
    51  				return err
    52  			}
    53  		case "TypeCondition":
    54  			err := json.Unmarshal(tmp[k], &f.TypeCondition)
    55  			if err != nil {
    56  				return err
    57  			}
    58  		case "Directives":
    59  			err := json.Unmarshal(tmp[k], &f.Directives)
    60  			if err != nil {
    61  				return err
    62  			}
    63  		case "SelectionSet":
    64  			ss, err := UnmarshalSelectionSet(tmp[k])
    65  			if err != nil {
    66  				return err
    67  			}
    68  			f.SelectionSet = ss
    69  		case "Definition":
    70  			err := json.Unmarshal(tmp[k], &f.Definition)
    71  			if err != nil {
    72  				return err
    73  			}
    74  		case "Position":
    75  			err := json.Unmarshal(tmp[k], &f.Position)
    76  			if err != nil {
    77  				return err
    78  			}
    79  		}
    80  	}
    81  	return nil
    82  }
    83  
    84  func (f *InlineFragment) UnmarshalJSON(b []byte) error {
    85  	var tmp map[string]json.RawMessage
    86  	if err := json.Unmarshal(b, &tmp); err != nil {
    87  		return err
    88  	}
    89  	for k := range tmp {
    90  		switch k {
    91  		case "TypeCondition":
    92  			err := json.Unmarshal(tmp[k], &f.TypeCondition)
    93  			if err != nil {
    94  				return err
    95  			}
    96  		case "Directives":
    97  			err := json.Unmarshal(tmp[k], &f.Directives)
    98  			if err != nil {
    99  				return err
   100  			}
   101  		case "SelectionSet":
   102  			ss, err := UnmarshalSelectionSet(tmp[k])
   103  			if err != nil {
   104  				return err
   105  			}
   106  			f.SelectionSet = ss
   107  		case "ObjectDefinition":
   108  			err := json.Unmarshal(tmp[k], &f.ObjectDefinition)
   109  			if err != nil {
   110  				return err
   111  			}
   112  		case "Position":
   113  			err := json.Unmarshal(tmp[k], &f.Position)
   114  			if err != nil {
   115  				return err
   116  			}
   117  		}
   118  	}
   119  	return nil
   120  }
   121  
   122  func (f *OperationDefinition) UnmarshalJSON(b []byte) error {
   123  	var tmp map[string]json.RawMessage
   124  	if err := json.Unmarshal(b, &tmp); err != nil {
   125  		return err
   126  	}
   127  	for k := range tmp {
   128  		switch k {
   129  		case "Operation":
   130  			err := json.Unmarshal(tmp[k], &f.Operation)
   131  			if err != nil {
   132  				return err
   133  			}
   134  		case "Name":
   135  			err := json.Unmarshal(tmp[k], &f.Name)
   136  			if err != nil {
   137  				return err
   138  			}
   139  		case "VariableDefinitions":
   140  			err := json.Unmarshal(tmp[k], &f.VariableDefinitions)
   141  			if err != nil {
   142  				return err
   143  			}
   144  		case "Directives":
   145  			err := json.Unmarshal(tmp[k], &f.Directives)
   146  			if err != nil {
   147  				return err
   148  			}
   149  		case "SelectionSet":
   150  			ss, err := UnmarshalSelectionSet(tmp[k])
   151  			if err != nil {
   152  				return err
   153  			}
   154  			f.SelectionSet = ss
   155  		case "Position":
   156  			err := json.Unmarshal(tmp[k], &f.Position)
   157  			if err != nil {
   158  				return err
   159  			}
   160  		}
   161  	}
   162  	return nil
   163  }
   164  
   165  func (f *Field) UnmarshalJSON(b []byte) error {
   166  	var tmp map[string]json.RawMessage
   167  	if err := json.Unmarshal(b, &tmp); err != nil {
   168  		return err
   169  	}
   170  	for k := range tmp {
   171  		switch k {
   172  		case "Alias":
   173  			err := json.Unmarshal(tmp[k], &f.Alias)
   174  			if err != nil {
   175  				return err
   176  			}
   177  		case "Name":
   178  			err := json.Unmarshal(tmp[k], &f.Name)
   179  			if err != nil {
   180  				return err
   181  			}
   182  		case "Arguments":
   183  			err := json.Unmarshal(tmp[k], &f.Arguments)
   184  			if err != nil {
   185  				return err
   186  			}
   187  		case "Directives":
   188  			err := json.Unmarshal(tmp[k], &f.Directives)
   189  			if err != nil {
   190  				return err
   191  			}
   192  		case "SelectionSet":
   193  			ss, err := UnmarshalSelectionSet(tmp[k])
   194  			if err != nil {
   195  				return err
   196  			}
   197  			f.SelectionSet = ss
   198  		case "Position":
   199  			err := json.Unmarshal(tmp[k], &f.Position)
   200  			if err != nil {
   201  				return err
   202  			}
   203  		case "Definition":
   204  			err := json.Unmarshal(tmp[k], &f.Definition)
   205  			if err != nil {
   206  				return err
   207  			}
   208  		case "ObjectDefinition":
   209  			err := json.Unmarshal(tmp[k], &f.ObjectDefinition)
   210  			if err != nil {
   211  				return err
   212  			}
   213  		}
   214  	}
   215  	return nil
   216  }
   217  

View as plain text