github.com/geneva/gqlgen@v0.17.7-0.20230801155730-7b9317164836/graphql/omittable.go (about) 1 package graphql 2 3 // Omittable is a wrapper around a value that also stores whether it is set 4 // or not. 5 type Omittable[T any] struct { 6 value T 7 set bool 8 } 9 10 func OmittableOf[T any](value T) Omittable[T] { 11 return Omittable[T]{ 12 value: value, 13 set: true, 14 } 15 } 16 17 func (o Omittable[T]) Value() T { 18 if !o.set { 19 var zero T 20 return zero 21 } 22 return o.value 23 } 24 25 func (o Omittable[T]) ValueOK() (T, bool) { 26 if !o.set { 27 var zero T 28 return zero, false 29 } 30 return o.value, true 31 } 32 33 func (o Omittable[T]) IsSet() bool { 34 return o.set 35 }