github.com/ydb-platform/ydb-go-sdk/v3@v3.89.2/internal/params/list.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  	list struct {
    13  		parent Builder
    14  		name   string
    15  		values []value.Value
    16  	}
    17  	listItem struct {
    18  		parent *list
    19  	}
    20  )
    21  
    22  func (l *list) Add() *listItem {
    23  	return &listItem{
    24  		parent: l,
    25  	}
    26  }
    27  
    28  func (l *list) AddItems(items ...value.Value) *list {
    29  	l.values = append(l.values, items...)
    30  
    31  	return l
    32  }
    33  
    34  func (l *list) EndList() Builder {
    35  	l.parent.params = append(l.parent.params, &Parameter{
    36  		parent: l.parent,
    37  		name:   l.name,
    38  		value:  value.ListValue(l.values...),
    39  	})
    40  
    41  	return l.parent
    42  }
    43  
    44  func (l *listItem) Text(v string) *list {
    45  	l.parent.values = append(l.parent.values, value.TextValue(v))
    46  
    47  	return l.parent
    48  }
    49  
    50  func (l *listItem) Bytes(v []byte) *list {
    51  	l.parent.values = append(l.parent.values, value.BytesValue(v))
    52  
    53  	return l.parent
    54  }
    55  
    56  func (l *listItem) Bool(v bool) *list {
    57  	l.parent.values = append(l.parent.values, value.BoolValue(v))
    58  
    59  	return l.parent
    60  }
    61  
    62  func (l *listItem) Uint64(v uint64) *list {
    63  	l.parent.values = append(l.parent.values, value.Uint64Value(v))
    64  
    65  	return l.parent
    66  }
    67  
    68  func (l *listItem) Int64(v int64) *list {
    69  	l.parent.values = append(l.parent.values, value.Int64Value(v))
    70  
    71  	return l.parent
    72  }
    73  
    74  func (l *listItem) Uint32(v uint32) *list {
    75  	l.parent.values = append(l.parent.values, value.Uint32Value(v))
    76  
    77  	return l.parent
    78  }
    79  
    80  func (l *listItem) Int32(v int32) *list {
    81  	l.parent.values = append(l.parent.values, value.Int32Value(v))
    82  
    83  	return l.parent
    84  }
    85  
    86  func (l *listItem) Uint16(v uint16) *list {
    87  	l.parent.values = append(l.parent.values, value.Uint16Value(v))
    88  
    89  	return l.parent
    90  }
    91  
    92  func (l *listItem) Int16(v int16) *list {
    93  	l.parent.values = append(l.parent.values, value.Int16Value(v))
    94  
    95  	return l.parent
    96  }
    97  
    98  func (l *listItem) Uint8(v uint8) *list {
    99  	l.parent.values = append(l.parent.values, value.Uint8Value(v))
   100  
   101  	return l.parent
   102  }
   103  
   104  func (l *listItem) Int8(v int8) *list {
   105  	l.parent.values = append(l.parent.values, value.Int8Value(v))
   106  
   107  	return l.parent
   108  }
   109  
   110  func (l *listItem) Float(v float32) *list {
   111  	l.parent.values = append(l.parent.values, value.FloatValue(v))
   112  
   113  	return l.parent
   114  }
   115  
   116  func (l *listItem) Double(v float64) *list {
   117  	l.parent.values = append(l.parent.values, value.DoubleValue(v))
   118  
   119  	return l.parent
   120  }
   121  
   122  func (l *listItem) Decimal(v [16]byte, precision, scale uint32) *list {
   123  	l.parent.values = append(l.parent.values, value.DecimalValue(v, precision, scale))
   124  
   125  	return l.parent
   126  }
   127  
   128  func (l *listItem) Timestamp(v time.Time) *list {
   129  	l.parent.values = append(l.parent.values, value.TimestampValueFromTime(v))
   130  
   131  	return l.parent
   132  }
   133  
   134  func (l *listItem) Date(v time.Time) *list {
   135  	l.parent.values = append(l.parent.values, value.DateValueFromTime(v))
   136  
   137  	return l.parent
   138  }
   139  
   140  func (l *listItem) Datetime(v time.Time) *list {
   141  	l.parent.values = append(l.parent.values, value.DatetimeValueFromTime(v))
   142  
   143  	return l.parent
   144  }
   145  
   146  func (l *listItem) Interval(v time.Duration) *list {
   147  	l.parent.values = append(l.parent.values, value.IntervalValueFromDuration(v))
   148  
   149  	return l.parent
   150  }
   151  
   152  func (l *listItem) JSON(v string) *list {
   153  	l.parent.values = append(l.parent.values, value.JSONValue(v))
   154  
   155  	return l.parent
   156  }
   157  
   158  func (l *listItem) JSONDocument(v string) *list {
   159  	l.parent.values = append(l.parent.values, value.JSONDocumentValue(v))
   160  
   161  	return l.parent
   162  }
   163  
   164  func (l *listItem) YSON(v []byte) *list {
   165  	l.parent.values = append(l.parent.values, value.YSONValue(v))
   166  
   167  	return l.parent
   168  }
   169  
   170  //// UUID has data corruption bug and will be removed in next version.
   171  ////
   172  //// Deprecated: Use Uuid (prefer) or UUIDWithIssue1501Value (for save old behavior) instead.
   173  //// https://github.com/ydb-platform/ydb-go-sdk/issues/1501
   174  //func (l *listItem) UUID(v [16]byte) *list {
   175  //	l.parent.values = append(l.parent.values, value.UUIDWithIssue1501Value(v))
   176  //
   177  //	return l.parent
   178  //}
   179  
   180  func (l *listItem) Uuid(v uuid.UUID) *list { //nolint:revive,stylecheck
   181  	l.parent.values = append(l.parent.values, value.Uuid(v))
   182  
   183  	return l.parent
   184  }
   185  
   186  func (l *listItem) UUIDWithIssue1501Value(v [16]byte) *list {
   187  	l.parent.values = append(l.parent.values, value.UUIDWithIssue1501Value(v))
   188  
   189  	return l.parent
   190  }
   191  
   192  func (l *listItem) TzDate(v time.Time) *list {
   193  	l.parent.values = append(l.parent.values, value.TzDateValueFromTime(v))
   194  
   195  	return l.parent
   196  }
   197  
   198  func (l *listItem) TzTimestamp(v time.Time) *list {
   199  	l.parent.values = append(l.parent.values, value.TzTimestampValueFromTime(v))
   200  
   201  	return l.parent
   202  }
   203  
   204  func (l *listItem) TzDatetime(v time.Time) *list {
   205  	l.parent.values = append(l.parent.values, value.TzDatetimeValueFromTime(v))
   206  
   207  	return l.parent
   208  }