github.com/99designs/gqlgen@v0.17.45/graphql/coercion.go (about) 1 package graphql 2 3 import ( 4 "encoding/json" 5 ) 6 7 // CoerceList applies coercion from a single value to a list. 8 func CoerceList(v interface{}) []interface{} { 9 var vSlice []interface{} 10 if v != nil { 11 switch v := v.(type) { 12 case []interface{}: 13 // already a slice no coercion required 14 vSlice = v 15 case []string: 16 if len(v) > 0 { 17 vSlice = []interface{}{v[0]} 18 } 19 case []json.Number: 20 if len(v) > 0 { 21 vSlice = []interface{}{v[0]} 22 } 23 case []bool: 24 if len(v) > 0 { 25 vSlice = []interface{}{v[0]} 26 } 27 case []map[string]interface{}: 28 if len(v) > 0 { 29 vSlice = []interface{}{v[0]} 30 } 31 case []float64: 32 if len(v) > 0 { 33 vSlice = []interface{}{v[0]} 34 } 35 case []float32: 36 if len(v) > 0 { 37 vSlice = []interface{}{v[0]} 38 } 39 case []int: 40 if len(v) > 0 { 41 vSlice = []interface{}{v[0]} 42 } 43 case []int32: 44 if len(v) > 0 { 45 vSlice = []interface{}{v[0]} 46 } 47 case []int64: 48 if len(v) > 0 { 49 vSlice = []interface{}{v[0]} 50 } 51 default: 52 vSlice = []interface{}{v} 53 } 54 } 55 return vSlice 56 }