github.com/zikaeroh/gqlgen@v0.7.2/graphql/int.go (about)

     1  package graphql
     2  
     3  import (
     4  	"encoding/json"
     5  	"fmt"
     6  	"io"
     7  	"strconv"
     8  )
     9  
    10  func MarshalInt(i int) Marshaler {
    11  	return WriterFunc(func(w io.Writer) {
    12  		io.WriteString(w, strconv.Itoa(i))
    13  	})
    14  }
    15  
    16  func UnmarshalInt(v interface{}) (int, error) {
    17  	switch v := v.(type) {
    18  	case string:
    19  		return strconv.Atoi(v)
    20  	case int:
    21  		return v, nil
    22  	case int64:
    23  		return int(v), nil
    24  	case json.Number:
    25  		return strconv.Atoi(string(v))
    26  	default:
    27  		return 0, fmt.Errorf("%T is not an int", v)
    28  	}
    29  }