azkustodata/value/bool.go (44 lines of code) (raw):

package value import ( "encoding/json" "fmt" "github.com/Azure/azure-kusto-go/azkustodata/types" "reflect" ) // Bool represents a Kusto boolean type. Bool implements Kusto. type Bool struct { pointerValue[bool] } func NewBool(v bool) *Bool { return &Bool{newPointerValue[bool](&v)} } func NewNullBool() *Bool { return &Bool{newPointerValue[bool](nil)} } // Convert Bool into reflect value. func (bo *Bool) Convert(v reflect.Value) error { return Convert[bool](*bo, &bo.pointerValue, v) } func (bo *Bool) Unmarshal(i interface{}) error { if i == nil { bo.value = nil return nil } // Boolean may sometimes be represented as an integer, 0 means false, 1 means true. if num, ok := i.(json.Number); ok { num, err := num.Int64() if err != nil { return parseError(bo, i, err) } bo.value = new(bool) if num == 0 { *bo.value = false } else if num == 1 { *bo.value = true } else { return parseError(bo, i, fmt.Errorf("expected 0 or 1, got %d", num)) } return nil } return bo.pointerValue.Unmarshal(i) } // GetType returns the type of the value. func (bo *Bool) GetType() types.Column { return types.Bool }