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 }