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  }