github.com/ydb-platform/ydb-go-sdk/v3@v3.89.2/internal/params/optional.go (about)

     1  package params
     2  
     3  import (
     4  	"time"
     5  
     6  	"github.com/google/uuid"
     7  
     8  	"github.com/ydb-platform/ydb-go-sdk/v3/internal/value"
     9  )
    10  
    11  type (
    12  	optional struct {
    13  		parent Builder
    14  		name   string
    15  		value  value.Value
    16  	}
    17  	optionalBuilder struct {
    18  		opt *optional
    19  	}
    20  )
    21  
    22  func (b *optionalBuilder) EndOptional() Builder {
    23  	b.opt.parent.params = append(b.opt.parent.params, &Parameter{
    24  		parent: b.opt.parent,
    25  		name:   b.opt.name,
    26  		value:  b.opt.value,
    27  	})
    28  
    29  	return b.opt.parent
    30  }
    31  
    32  func (p *optional) Text(v *string) *optionalBuilder {
    33  	p.value = value.NullableTextValue(v)
    34  
    35  	return &optionalBuilder{opt: p}
    36  }
    37  
    38  func (p *optional) Bytes(v *[]byte) *optionalBuilder {
    39  	p.value = value.NullableBytesValue(v)
    40  
    41  	return &optionalBuilder{opt: p}
    42  }
    43  
    44  func (p *optional) Bool(v *bool) *optionalBuilder {
    45  	p.value = value.NullableBoolValue(v)
    46  
    47  	return &optionalBuilder{opt: p}
    48  }
    49  
    50  func (p *optional) Uint64(v *uint64) *optionalBuilder {
    51  	p.value = value.NullableUint64Value(v)
    52  
    53  	return &optionalBuilder{opt: p}
    54  }
    55  
    56  func (p *optional) Int64(v *int64) *optionalBuilder {
    57  	p.value = value.NullableInt64Value(v)
    58  
    59  	return &optionalBuilder{opt: p}
    60  }
    61  
    62  func (p *optional) Uint32(v *uint32) *optionalBuilder {
    63  	p.value = value.NullableUint32Value(v)
    64  
    65  	return &optionalBuilder{opt: p}
    66  }
    67  
    68  func (p *optional) Int32(v *int32) *optionalBuilder {
    69  	p.value = value.NullableInt32Value(v)
    70  
    71  	return &optionalBuilder{opt: p}
    72  }
    73  
    74  func (p *optional) Uint16(v *uint16) *optionalBuilder {
    75  	p.value = value.NullableUint16Value(v)
    76  
    77  	return &optionalBuilder{opt: p}
    78  }
    79  
    80  func (p *optional) Int16(v *int16) *optionalBuilder {
    81  	p.value = value.NullableInt16Value(v)
    82  
    83  	return &optionalBuilder{opt: p}
    84  }
    85  
    86  func (p *optional) Uint8(v *uint8) *optionalBuilder {
    87  	p.value = value.NullableUint8Value(v)
    88  
    89  	return &optionalBuilder{opt: p}
    90  }
    91  
    92  func (p *optional) Int8(v *int8) *optionalBuilder {
    93  	p.value = value.NullableInt8Value(v)
    94  
    95  	return &optionalBuilder{opt: p}
    96  }
    97  
    98  func (p *optional) Float(v *float32) *optionalBuilder {
    99  	p.value = value.NullableFloatValue(v)
   100  
   101  	return &optionalBuilder{opt: p}
   102  }
   103  
   104  func (p *optional) Double(v *float64) *optionalBuilder {
   105  	p.value = value.NullableDoubleValue(v)
   106  
   107  	return &optionalBuilder{opt: p}
   108  }
   109  
   110  func (p *optional) Decimal(v *[16]byte, precision, scale uint32) *optionalBuilder {
   111  	p.value = value.NullableDecimalValue(v, precision, scale)
   112  
   113  	return &optionalBuilder{opt: p}
   114  }
   115  
   116  func (p *optional) Timestamp(v *time.Time) *optionalBuilder {
   117  	p.value = value.NullableTimestampValueFromTime(v)
   118  
   119  	return &optionalBuilder{opt: p}
   120  }
   121  
   122  func (p *optional) Date(v *time.Time) *optionalBuilder {
   123  	p.value = value.NullableDateValueFromTime(v)
   124  
   125  	return &optionalBuilder{opt: p}
   126  }
   127  
   128  func (p *optional) Datetime(v *time.Time) *optionalBuilder {
   129  	p.value = value.NullableDatetimeValueFromTime(v)
   130  
   131  	return &optionalBuilder{opt: p}
   132  }
   133  
   134  func (p *optional) Interval(v *time.Duration) *optionalBuilder {
   135  	p.value = value.NullableIntervalValueFromDuration(v)
   136  
   137  	return &optionalBuilder{opt: p}
   138  }
   139  
   140  func (p *optional) JSON(v *string) *optionalBuilder {
   141  	p.value = value.NullableJSONValue(v)
   142  
   143  	return &optionalBuilder{opt: p}
   144  }
   145  
   146  func (p *optional) JSONDocument(v *string) *optionalBuilder {
   147  	p.value = value.NullableJSONDocumentValue(v)
   148  
   149  	return &optionalBuilder{opt: p}
   150  }
   151  
   152  func (p *optional) YSON(v *[]byte) *optionalBuilder {
   153  	p.value = value.NullableYSONValueFromBytes(v)
   154  
   155  	return &optionalBuilder{opt: p}
   156  }
   157  
   158  //// UUID has data corruption bug and will be removed in next version.
   159  ////
   160  //// Deprecated: Use Uuid (prefer) or UUIDWithIssue1501Value (for save old behavior) instead.
   161  //// https://github.com/ydb-platform/ydb-go-sdk/issues/1501
   162  //func (p *optional) UUID(v *[16]byte) *optionalBuilder {
   163  //	p.value = value.NullableUUIDValue(v)
   164  //
   165  //	return &optionalBuilder{opt: p}
   166  //}
   167  
   168  func (p *optional) Uuid(v *uuid.UUID) *optionalBuilder { //nolint:revive,stylecheck
   169  	p.value = value.NullableUuidValue(v)
   170  
   171  	return &optionalBuilder{opt: p}
   172  }
   173  
   174  func (p *optional) UUIDWithIssue1501Value(v *[16]byte) *optionalBuilder {
   175  	p.value = value.NullableUUIDValue(v)
   176  
   177  	return &optionalBuilder{opt: p}
   178  }
   179  
   180  func (p *optional) TzDate(v *time.Time) *optionalBuilder {
   181  	p.value = value.NullableTzDateValueFromTime(v)
   182  
   183  	return &optionalBuilder{opt: p}
   184  }
   185  
   186  func (p *optional) TzTimestamp(v *time.Time) *optionalBuilder {
   187  	p.value = value.NullableTzTimestampValueFromTime(v)
   188  
   189  	return &optionalBuilder{opt: p}
   190  }
   191  
   192  func (p *optional) TzDatetime(v *time.Time) *optionalBuilder {
   193  	p.value = value.NullableTzDatetimeValueFromTime(v)
   194  
   195  	return &optionalBuilder{opt: p}
   196  }