github.com/operandinc/gqlgen@v0.16.1/codegen/util.go (about)

     1  package codegen
     2  
     3  import (
     4  	"fmt"
     5  	"go/types"
     6  	"strings"
     7  )
     8  
     9  func findGoNamedType(def types.Type) (*types.Named, error) {
    10  	if def == nil {
    11  		return nil, nil
    12  	}
    13  
    14  	namedType, ok := def.(*types.Named)
    15  	if !ok {
    16  		return nil, fmt.Errorf("expected %s to be a named type, instead found %T\n", def.String(), def)
    17  	}
    18  
    19  	return namedType, nil
    20  }
    21  
    22  func findGoInterface(def types.Type) (*types.Interface, error) {
    23  	if def == nil {
    24  		return nil, nil
    25  	}
    26  	namedType, err := findGoNamedType(def)
    27  	if err != nil {
    28  		return nil, err
    29  	}
    30  	if namedType == nil {
    31  		return nil, nil
    32  	}
    33  
    34  	underlying, ok := namedType.Underlying().(*types.Interface)
    35  	if !ok {
    36  		return nil, fmt.Errorf("expected %s to be a named interface, instead found %s", def.String(), namedType.String())
    37  	}
    38  
    39  	return underlying, nil
    40  }
    41  
    42  func equalFieldName(source, target string) bool {
    43  	source = strings.ReplaceAll(source, "_", "")
    44  	target = strings.ReplaceAll(target, "_", "")
    45  	return strings.EqualFold(source, target)
    46  }