github.com/ydb-platform/ydb-go-sdk/v3@v3.89.2/internal/params/struct.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 structure struct { 13 parent Builder 14 name string 15 values []value.StructValueField 16 } 17 18 structValue struct { 19 parent *structure 20 name string 21 } 22 ) 23 24 func (s *structure) AddItems(items ...value.StructValueField) *structure { 25 s.values = append(s.values, items...) 26 27 return s 28 } 29 30 func (s *structure) Field(v string) *structValue { 31 return &structValue{ 32 parent: s, 33 name: v, 34 } 35 } 36 37 func (s *structure) EndStruct() Builder { 38 s.parent.params = append(s.parent.params, &Parameter{ 39 parent: s.parent, 40 name: s.name, 41 value: value.StructValue(s.values...), 42 }) 43 44 return s.parent 45 } 46 47 func (s *structValue) Text(v string) *structure { 48 s.parent.values = append(s.parent.values, value.StructValueField{ 49 Name: s.name, 50 V: value.TextValue(v), 51 }) 52 53 return s.parent 54 } 55 56 func (s *structValue) Bytes(v []byte) *structure { 57 s.parent.values = append(s.parent.values, value.StructValueField{ 58 Name: s.name, 59 V: value.BytesValue(v), 60 }) 61 62 return s.parent 63 } 64 65 func (s *structValue) Bool(v bool) *structure { 66 s.parent.values = append(s.parent.values, value.StructValueField{ 67 Name: s.name, 68 V: value.BoolValue(v), 69 }) 70 71 return s.parent 72 } 73 74 func (s *structValue) Uint64(v uint64) *structure { 75 s.parent.values = append(s.parent.values, value.StructValueField{ 76 Name: s.name, 77 V: value.Uint64Value(v), 78 }) 79 80 return s.parent 81 } 82 83 func (s *structValue) Int64(v int64) *structure { 84 s.parent.values = append(s.parent.values, value.StructValueField{ 85 Name: s.name, 86 V: value.Int64Value(v), 87 }) 88 89 return s.parent 90 } 91 92 func (s *structValue) Uint32(v uint32) *structure { 93 s.parent.values = append(s.parent.values, value.StructValueField{ 94 Name: s.name, 95 V: value.Uint32Value(v), 96 }) 97 98 return s.parent 99 } 100 101 func (s *structValue) Int32(v int32) *structure { 102 s.parent.values = append(s.parent.values, value.StructValueField{ 103 Name: s.name, 104 V: value.Int32Value(v), 105 }) 106 107 return s.parent 108 } 109 110 func (s *structValue) Uint16(v uint16) *structure { 111 s.parent.values = append(s.parent.values, value.StructValueField{ 112 Name: s.name, 113 V: value.Uint16Value(v), 114 }) 115 116 return s.parent 117 } 118 119 func (s *structValue) Int16(v int16) *structure { 120 s.parent.values = append(s.parent.values, value.StructValueField{ 121 Name: s.name, 122 V: value.Int16Value(v), 123 }) 124 125 return s.parent 126 } 127 128 func (s *structValue) Uint8(v uint8) *structure { 129 s.parent.values = append(s.parent.values, value.StructValueField{ 130 Name: s.name, 131 V: value.Uint8Value(v), 132 }) 133 134 return s.parent 135 } 136 137 func (s *structValue) Int8(v int8) *structure { 138 s.parent.values = append(s.parent.values, value.StructValueField{ 139 Name: s.name, 140 V: value.Int8Value(v), 141 }) 142 143 return s.parent 144 } 145 146 func (s *structValue) Float(v float32) *structure { 147 s.parent.values = append(s.parent.values, value.StructValueField{ 148 Name: s.name, 149 V: value.FloatValue(v), 150 }) 151 152 return s.parent 153 } 154 155 func (s *structValue) Double(v float64) *structure { 156 s.parent.values = append(s.parent.values, value.StructValueField{ 157 Name: s.name, 158 V: value.DoubleValue(v), 159 }) 160 161 return s.parent 162 } 163 164 func (s *structValue) Decimal(v [16]byte, precision, scale uint32) *structure { 165 s.parent.values = append(s.parent.values, value.StructValueField{ 166 Name: s.name, 167 V: value.DecimalValue(v, precision, scale), 168 }) 169 170 return s.parent 171 } 172 173 func (s *structValue) Timestamp(v time.Time) *structure { 174 s.parent.values = append(s.parent.values, value.StructValueField{ 175 Name: s.name, 176 V: value.TimestampValueFromTime(v), 177 }) 178 179 return s.parent 180 } 181 182 func (s *structValue) Date(v time.Time) *structure { 183 s.parent.values = append(s.parent.values, value.StructValueField{ 184 Name: s.name, 185 V: value.DateValueFromTime(v), 186 }) 187 188 return s.parent 189 } 190 191 func (s *structValue) Datetime(v time.Time) *structure { 192 s.parent.values = append(s.parent.values, value.StructValueField{ 193 Name: s.name, 194 V: value.DatetimeValueFromTime(v), 195 }) 196 197 return s.parent 198 } 199 200 func (s *structValue) Interval(v time.Duration) *structure { 201 s.parent.values = append(s.parent.values, value.StructValueField{ 202 Name: s.name, 203 V: value.IntervalValueFromDuration(v), 204 }) 205 206 return s.parent 207 } 208 209 func (s *structValue) JSON(v string) *structure { 210 s.parent.values = append(s.parent.values, value.StructValueField{ 211 Name: s.name, 212 V: value.JSONValue(v), 213 }) 214 215 return s.parent 216 } 217 218 func (s *structValue) JSONDocument(v string) *structure { 219 s.parent.values = append(s.parent.values, value.StructValueField{ 220 Name: s.name, 221 V: value.JSONDocumentValue(v), 222 }) 223 224 return s.parent 225 } 226 227 func (s *structValue) YSON(v []byte) *structure { 228 s.parent.values = append(s.parent.values, value.StructValueField{ 229 Name: s.name, 230 V: value.YSONValue(v), 231 }) 232 233 return s.parent 234 } 235 236 //// UUID has data corruption bug and will be removed in next version. 237 //// 238 //// Deprecated: Use Uuid (prefer) or UUIDWithIssue1501Value (for save old behavior) instead. 239 //// https://github.com/ydb-platform/ydb-go-sdk/issues/1501 240 //func (s *structValue) UUID(v [16]byte) *structure { 241 // s.parent.values = append(s.parent.values, value.StructValueField{ 242 // Name: s.name, 243 // V: value.UUIDWithIssue1501Value(v), 244 // }) 245 // 246 // return s.parent 247 //} 248 249 func (s *structValue) Uuid(v uuid.UUID) *structure { //nolint:revive,stylecheck 250 s.parent.values = append(s.parent.values, value.StructValueField{ 251 Name: s.name, 252 V: value.Uuid(v), 253 }) 254 255 return s.parent 256 } 257 258 func (s *structValue) UUIDWithIssue1501Value(v [16]byte) *structure { 259 s.parent.values = append(s.parent.values, value.StructValueField{ 260 Name: s.name, 261 V: value.UUIDWithIssue1501Value(v), 262 }) 263 264 return s.parent 265 } 266 267 func (s *structValue) TzDatetime(v time.Time) *structure { 268 s.parent.values = append(s.parent.values, value.StructValueField{ 269 Name: s.name, 270 V: value.TzDatetimeValueFromTime(v), 271 }) 272 273 return s.parent 274 } 275 276 func (s *structValue) TzTimestamp(v time.Time) *structure { 277 s.parent.values = append(s.parent.values, value.StructValueField{ 278 Name: s.name, 279 V: value.TzTimestampValueFromTime(v), 280 }) 281 282 return s.parent 283 } 284 285 func (s *structValue) TzDate(v time.Time) *structure { 286 s.parent.values = append(s.parent.values, value.StructValueField{ 287 Name: s.name, 288 V: value.TzDateValueFromTime(v), 289 }) 290 291 return s.parent 292 }