diff options
Diffstat (limited to 'packages/sdk/go/internal/param')
| -rw-r--r-- | packages/sdk/go/internal/param/field.go | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/packages/sdk/go/internal/param/field.go b/packages/sdk/go/internal/param/field.go new file mode 100644 index 000000000..4d0fd9c6f --- /dev/null +++ b/packages/sdk/go/internal/param/field.go @@ -0,0 +1,29 @@ +package param + +import ( + "fmt" +) + +type FieldLike interface{ field() } + +// Field is a wrapper used for all values sent to the API, +// to distinguish zero values from null or omitted fields. +// +// It also allows sending arbitrary deserializable values. +// +// To instantiate a Field, use the helpers exported from +// the package root: `F()`, `Null()`, `Raw()`, etc. +type Field[T any] struct { + FieldLike + Value T + Null bool + Present bool + Raw any +} + +func (f Field[T]) String() string { + if s, ok := any(f.Value).(fmt.Stringer); ok { + return s.String() + } + return fmt.Sprintf("%v", f.Value) +} |
