github.com/ydb-platform/ydb-go-sdk/v3@v3.89.2/table/types/value.go (about)

     1  package types
     2  
     3  import (
     4  	"math/big"
     5  	"time"
     6  
     7  	"github.com/google/uuid"
     8  
     9  	"github.com/ydb-platform/ydb-go-sdk/v3/internal/decimal"
    10  	"github.com/ydb-platform/ydb-go-sdk/v3/internal/value"
    11  	"github.com/ydb-platform/ydb-go-sdk/v3/internal/xstring"
    12  )
    13  
    14  type Value = value.Value
    15  
    16  func BoolValue(v bool) Value { return value.BoolValue(v) }
    17  
    18  func Int8Value(v int8) Value { return value.Int8Value(v) }
    19  
    20  func Uint8Value(v uint8) Value { return value.Uint8Value(v) }
    21  
    22  func Int16Value(v int16) Value { return value.Int16Value(v) }
    23  
    24  func Uint16Value(v uint16) Value { return value.Uint16Value(v) }
    25  
    26  func Int32Value(v int32) Value { return value.Int32Value(v) }
    27  
    28  func Uint32Value(v uint32) Value { return value.Uint32Value(v) }
    29  
    30  func Int64Value(v int64) Value { return value.Int64Value(v) }
    31  
    32  func Uint64Value(v uint64) Value { return value.Uint64Value(v) }
    33  
    34  func FloatValue(v float32) Value { return value.FloatValue(v) }
    35  
    36  func DoubleValue(v float64) Value { return value.DoubleValue(v) }
    37  
    38  // DateValue returns ydb date value by given days since Epoch
    39  func DateValue(v uint32) Value { return value.DateValue(v) }
    40  
    41  // DatetimeValue makes ydb datetime value from seconds since Epoch
    42  func DatetimeValue(v uint32) Value { return value.DatetimeValue(v) }
    43  
    44  // TimestampValue makes ydb timestamp value from microseconds since Epoch
    45  func TimestampValue(v uint64) Value { return value.TimestampValue(v) }
    46  
    47  // IntervalValueFromMicroseconds makes Value from given microseconds value
    48  func IntervalValueFromMicroseconds(v int64) Value { return value.IntervalValue(v) }
    49  
    50  // IntervalValue makes Value from given microseconds value
    51  //
    52  // Deprecated: use IntervalValueFromMicroseconds instead.
    53  // Will be removed after Oct 2024.
    54  // Read about versioning policy: https://github.com/ydb-platform/ydb-go-sdk/blob/master/VERSIONING.md#deprecated
    55  func IntervalValue(v int64) Value { return value.IntervalValue(v) }
    56  
    57  // TzDateValue makes TzDate value from string
    58  func TzDateValue(v string) Value { return value.TzDateValue(v) }
    59  
    60  // TzDatetimeValue makes TzDatetime value from string
    61  func TzDatetimeValue(v string) Value { return value.TzDatetimeValue(v) }
    62  
    63  // TzTimestampValue makes TzTimestamp value from string
    64  func TzTimestampValue(v string) Value { return value.TzTimestampValue(v) }
    65  
    66  // DateValueFromTime makes Date value from time.Time
    67  //
    68  // Warning: all *From* helpers will be removed at next major release
    69  // (functional will be implements with go1.18 type lists)
    70  func DateValueFromTime(t time.Time) Value {
    71  	return value.DateValueFromTime(t)
    72  }
    73  
    74  // DatetimeValueFromTime makes Datetime value from time.Time
    75  //
    76  // Warning: all *From* helpers will be removed at next major release
    77  // (functional will be implements with go1.18 type lists)
    78  func DatetimeValueFromTime(t time.Time) Value {
    79  	return value.DatetimeValueFromTime(t)
    80  }
    81  
    82  // TimestampValueFromTime makes Timestamp value from time.Time
    83  //
    84  // Warning: all *From* helpers will be removed at next major release
    85  // (functional will be implements with go1.18 type lists)
    86  func TimestampValueFromTime(t time.Time) Value {
    87  	return value.TimestampValueFromTime(t)
    88  }
    89  
    90  // IntervalValueFromDuration makes Interval value from time.Duration
    91  //
    92  // Warning: all *From* helpers will be removed at next major release
    93  // (functional will be implements with go1.18 type lists)
    94  func IntervalValueFromDuration(v time.Duration) Value {
    95  	return value.IntervalValueFromDuration(v)
    96  }
    97  
    98  // TzDateValueFromTime makes TzDate value from time.Time
    99  //
   100  // Warning: all *From* helpers will be removed at next major release
   101  // (functional will be implements with go1.18 type lists)
   102  func TzDateValueFromTime(t time.Time) Value {
   103  	return value.TzDateValueFromTime(t)
   104  }
   105  
   106  // TzDatetimeValueFromTime makes TzDatetime value from time.Time
   107  //
   108  // Warning: all *From* helpers will be removed at next major release
   109  // (functional will be implements with go1.18 type lists)
   110  func TzDatetimeValueFromTime(t time.Time) Value {
   111  	return value.TzDatetimeValueFromTime(t)
   112  }
   113  
   114  // TzTimestampValueFromTime makes TzTimestamp value from time.Time
   115  //
   116  // Warning: all *From* helpers will be removed at next major release
   117  // (functional will be implements with go1.18 type lists)
   118  func TzTimestampValueFromTime(t time.Time) Value {
   119  	return value.TzTimestampValueFromTime(t)
   120  }
   121  
   122  // StringValue returns bytes value
   123  //
   124  // Deprecated: use BytesValue instead.
   125  // Will be removed after Oct 2024.
   126  // Read about versioning policy: https://github.com/ydb-platform/ydb-go-sdk/blob/master/VERSIONING.md#deprecated
   127  func StringValue(v []byte) Value { return value.BytesValue(v) }
   128  
   129  func BytesValue(v []byte) Value { return value.BytesValue(v) }
   130  
   131  func BytesValueFromString(v string) Value { return value.BytesValue(xstring.ToBytes(v)) }
   132  
   133  // StringValueFromString makes String value from string
   134  //
   135  // Warning: all *From* helpers will be removed at next major release
   136  // (functional will be implements with go1.18 type lists)
   137  func StringValueFromString(v string) Value { return value.BytesValue(xstring.ToBytes(v)) }
   138  
   139  func UTF8Value(v string) Value { return value.TextValue(v) }
   140  
   141  func TextValue(v string) Value { return value.TextValue(v) }
   142  
   143  func YSONValue(v string) Value { return value.YSONValue(xstring.ToBytes(v)) }
   144  
   145  // YSONValueFromBytes makes YSON value from bytes
   146  //
   147  // Warning: all *From* helpers will be removed at next major release
   148  // (functional will be implements with go1.18 type lists)
   149  func YSONValueFromBytes(v []byte) Value { return value.YSONValue(v) }
   150  
   151  func JSONValue(v string) Value { return value.JSONValue(v) }
   152  
   153  // JSONValueFromBytes makes JSON value from bytes
   154  //
   155  // Warning: all *From* helpers will be removed at next major release
   156  // (functional will be implements with go1.18 type lists)
   157  func JSONValueFromBytes(v []byte) Value { return value.JSONValue(xstring.FromBytes(v)) }
   158  
   159  // removed for https://github.com/ydb-platform/ydb-go-sdk/issues/1501
   160  // func UUIDValue(v [16]byte) Value { return UUIDWithIssue1501Value(v) }
   161  
   162  // UUIDBytesWithIssue1501Type is type wrapper for scan expected values for values stored with bug
   163  // https://github.com/ydb-platform/ydb-go-sdk/issues/1501
   164  type UUIDBytesWithIssue1501Type = value.UUIDIssue1501FixedBytesWrapper
   165  
   166  func NewUUIDBytesWithIssue1501(val [16]byte) UUIDBytesWithIssue1501Type {
   167  	return value.NewUUIDIssue1501FixedBytesWrapper(val)
   168  }
   169  
   170  // UUIDWithIssue1501Value is function for save uuid with old corrupted data format for save old behavior
   171  // https://github.com/ydb-platform/ydb-go-sdk/issues/1501
   172  //
   173  // Use UuidValue for all new code
   174  func UUIDWithIssue1501Value(v [16]byte) Value {
   175  	return value.UUIDWithIssue1501Value(v)
   176  }
   177  
   178  func UuidValue(v uuid.UUID) Value { //nolint:revive,stylecheck
   179  	return value.Uuid(v)
   180  }
   181  
   182  func JSONDocumentValue(v string) Value { return value.JSONDocumentValue(v) }
   183  
   184  // JSONDocumentValueFromBytes makes JSONDocument value from bytes
   185  //
   186  // Warning: all *From* helpers will be removed at next major release
   187  // (functional will be implements with go1.18 type lists)
   188  func JSONDocumentValueFromBytes(v []byte) Value {
   189  	return value.JSONDocumentValue(xstring.FromBytes(v))
   190  }
   191  
   192  func DyNumberValue(v string) Value { return value.DyNumberValue(v) }
   193  
   194  func VoidValue() Value { return value.VoidValue() }
   195  
   196  func NullValue(t Type) Value { return value.NullValue(t) }
   197  
   198  func ZeroValue(t Type) Value { return value.ZeroValue(t) }
   199  
   200  func OptionalValue(v Value) Value { return value.OptionalValue(v) }
   201  
   202  // Decimal supported in scanner API
   203  type Decimal = decimal.Decimal
   204  
   205  // DecimalValue creates decimal value of given types t and value v.
   206  // Note that Decimal.Bytes interpreted as big-endian int128.
   207  func DecimalValue(v *Decimal) Value {
   208  	return value.DecimalValue(v.Bytes, v.Precision, v.Scale)
   209  }
   210  
   211  func DecimalValueFromBigInt(v *big.Int, precision, scale uint32) Value {
   212  	return value.DecimalValueFromBigInt(v, precision, scale)
   213  }
   214  
   215  func DecimalValueFromString(str string, precision, scale uint32) (Value, error) {
   216  	return value.DecimalValueFromString(str, precision, scale)
   217  }
   218  
   219  func TupleValue(vs ...Value) Value {
   220  	return value.TupleValue(vs...)
   221  }
   222  
   223  func ListValue(vs ...Value) Value {
   224  	return value.ListValue(vs...)
   225  }
   226  
   227  func SetValue(vs ...Value) Value {
   228  	return value.SetValue(vs...)
   229  }
   230  
   231  type structValueFields struct {
   232  	fields []value.StructValueField
   233  }
   234  
   235  type StructValueOption func(*structValueFields)
   236  
   237  func StructFieldValue(name string, v Value) StructValueOption {
   238  	return func(t *structValueFields) {
   239  		t.fields = append(t.fields, value.StructValueField{Name: name, V: v})
   240  	}
   241  }
   242  
   243  func StructValue(opts ...StructValueOption) Value {
   244  	var p structValueFields
   245  	for _, opt := range opts {
   246  		if opt != nil {
   247  			opt(&p)
   248  		}
   249  	}
   250  
   251  	return value.StructValue(p.fields...)
   252  }
   253  
   254  type dictValueFields struct {
   255  	fields []value.DictValueField
   256  }
   257  
   258  type DictValueOption func(*dictValueFields)
   259  
   260  func DictFieldValue(k, v Value) DictValueOption {
   261  	return func(t *dictValueFields) {
   262  		t.fields = append(t.fields, value.DictValueField{K: k, V: v})
   263  	}
   264  }
   265  
   266  func DictValue(opts ...DictValueOption) Value {
   267  	var p dictValueFields
   268  	for _, opt := range opts {
   269  		if opt != nil {
   270  			opt(&p)
   271  		}
   272  	}
   273  
   274  	return value.DictValue(p.fields...)
   275  }
   276  
   277  func VariantValueStruct(v Value, name string, variantT Type) Value {
   278  	return value.VariantValueStruct(v, name, variantT)
   279  }
   280  
   281  func VariantValueTuple(v Value, i uint32, variantT Type) Value {
   282  	return value.VariantValueTuple(v, i, variantT)
   283  }
   284  
   285  func NullableBoolValue(v *bool) Value {
   286  	return value.NullableBoolValue(v)
   287  }
   288  
   289  func NullableInt8Value(v *int8) Value {
   290  	return value.NullableInt8Value(v)
   291  }
   292  
   293  func NullableInt16Value(v *int16) Value {
   294  	return value.NullableInt16Value(v)
   295  }
   296  
   297  func NullableInt32Value(v *int32) Value {
   298  	return value.NullableInt32Value(v)
   299  }
   300  
   301  func NullableInt64Value(v *int64) Value {
   302  	return value.NullableInt64Value(v)
   303  }
   304  
   305  func NullableUint8Value(v *uint8) Value {
   306  	return value.NullableUint8Value(v)
   307  }
   308  
   309  func NullableUint16Value(v *uint16) Value {
   310  	return value.NullableUint16Value(v)
   311  }
   312  
   313  func NullableUint32Value(v *uint32) Value {
   314  	return value.NullableUint32Value(v)
   315  }
   316  
   317  func NullableUint64Value(v *uint64) Value {
   318  	return value.NullableUint64Value(v)
   319  }
   320  
   321  func NullableFloatValue(v *float32) Value {
   322  	return value.NullableFloatValue(v)
   323  }
   324  
   325  func NullableDoubleValue(v *float64) Value {
   326  	return value.NullableDoubleValue(v)
   327  }
   328  
   329  func NullableDateValue(v *uint32) Value {
   330  	return value.NullableDateValue(v)
   331  }
   332  
   333  func NullableDateValueFromTime(v *time.Time) Value {
   334  	return value.NullableDateValueFromTime(v)
   335  }
   336  
   337  func NullableDecimalValue(v *[16]byte, precision, scale uint32) Value {
   338  	return value.NullableDecimalValue(v, precision, scale)
   339  }
   340  
   341  func NullableDecimalValueFromBigInt(v *big.Int, precision, scale uint32) Value {
   342  	return value.NullableDecimalValueFromBigInt(v, precision, scale)
   343  }
   344  
   345  func NullableDatetimeValue(v *uint32) Value {
   346  	return value.NullableDatetimeValue(v)
   347  }
   348  
   349  func NullableDatetimeValueFromTime(v *time.Time) Value {
   350  	return value.NullableDatetimeValueFromTime(v)
   351  }
   352  
   353  func NullableTzDateValue(v *string) Value {
   354  	return value.NullableTzDateValue(v)
   355  }
   356  
   357  func NullableTzDateValueFromTime(v *time.Time) Value {
   358  	return value.NullableTzDateValueFromTime(v)
   359  }
   360  
   361  func NullableTzDatetimeValue(v *string) Value {
   362  	return value.NullableTzDatetimeValue(v)
   363  }
   364  
   365  func NullableTzDatetimeValueFromTime(v *time.Time) Value {
   366  	return value.NullableTzDatetimeValueFromTime(v)
   367  }
   368  
   369  func NullableTimestampValue(v *uint64) Value {
   370  	return value.NullableTimestampValue(v)
   371  }
   372  
   373  func NullableTimestampValueFromTime(v *time.Time) Value {
   374  	return value.NullableTimestampValueFromTime(v)
   375  }
   376  
   377  func NullableTzTimestampValue(v *string) Value {
   378  	return value.NullableTzTimestampValue(v)
   379  }
   380  
   381  func NullableTzTimestampValueFromTime(v *time.Time) Value {
   382  	return value.NullableTzTimestampValueFromTime(v)
   383  }
   384  
   385  // NullableIntervalValue makes Value which maybe nil or valued
   386  //
   387  // Deprecated: use NullableIntervalValueFromMicroseconds instead.
   388  // Will be removed after Oct 2024.
   389  // Read about versioning policy: https://github.com/ydb-platform/ydb-go-sdk/blob/master/VERSIONING.md#deprecated
   390  func NullableIntervalValue(v *int64) Value {
   391  	return value.NullableIntervalValueFromMicroseconds(v)
   392  }
   393  
   394  func NullableIntervalValueFromMicroseconds(v *int64) Value {
   395  	return value.NullableIntervalValueFromMicroseconds(v)
   396  }
   397  
   398  func NullableIntervalValueFromDuration(v *time.Duration) Value {
   399  	return value.NullableIntervalValueFromDuration(v)
   400  }
   401  
   402  // NullableStringValue
   403  //
   404  // Deprecated: use NullableBytesValue instead.
   405  // Will be removed after Oct 2024.
   406  // Read about versioning policy: https://github.com/ydb-platform/ydb-go-sdk/blob/master/VERSIONING.md#deprecated
   407  func NullableStringValue(v *[]byte) Value {
   408  	return value.NullableBytesValue(v)
   409  }
   410  
   411  func NullableBytesValue(v *[]byte) Value {
   412  	return value.NullableBytesValue(v)
   413  }
   414  
   415  func NullableStringValueFromString(v *string) Value {
   416  	return value.NullableBytesValueFromString(v)
   417  }
   418  
   419  func NullableBytesValueFromString(v *string) Value {
   420  	return value.NullableBytesValueFromString(v)
   421  }
   422  
   423  func NullableUTF8Value(v *string) Value {
   424  	return value.NullableTextValue(v)
   425  }
   426  
   427  func NullableTextValue(v *string) Value {
   428  	return value.NullableTextValue(v)
   429  }
   430  
   431  func NullableYSONValue(v *string) Value {
   432  	return value.NullableYSONValue(v)
   433  }
   434  
   435  func NullableYSONValueFromBytes(v *[]byte) Value {
   436  	return value.NullableYSONValueFromBytes(v)
   437  }
   438  
   439  func NullableJSONValue(v *string) Value {
   440  	return value.NullableJSONValue(v)
   441  }
   442  
   443  func NullableJSONValueFromBytes(v *[]byte) Value {
   444  	return value.NullableJSONValueFromBytes(v)
   445  }
   446  
   447  func NullableUUIDValue(v *[16]byte) Value {
   448  	return value.NullableUUIDValue(v)
   449  }
   450  
   451  func NullableUUIDValueWithIssue1501(v *[16]byte) Value {
   452  	return value.NullableUUIDValueWithIssue1501(v)
   453  }
   454  
   455  func NullableUUIDTypedValue(v *uuid.UUID) Value {
   456  	return value.NullableUuidValue(v)
   457  }
   458  
   459  func NullableJSONDocumentValue(v *string) Value {
   460  	return value.NullableJSONDocumentValue(v)
   461  }
   462  
   463  func NullableJSONDocumentValueFromBytes(v *[]byte) Value {
   464  	return value.NullableJSONDocumentValueFromBytes(v)
   465  }
   466  
   467  func NullableDyNumberValue(v *string) Value {
   468  	return value.NullableDyNumberValue(v)
   469  }
   470  
   471  func Nullable(t Type, v interface{}) Value {
   472  	return value.Nullable(t, v)
   473  }