Skip to content

Commit f98dbd3

Browse files
committed
added set params impl
1 parent 5567c95 commit f98dbd3

File tree

2 files changed

+157
-0
lines changed

2 files changed

+157
-0
lines changed

internal/params/parameters.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,14 @@ func (p *Parameter) List() *list {
109109
}
110110
}
111111

112+
func (p *Parameter) Set() *set {
113+
return &set{
114+
parent: p.parent,
115+
name: p.name,
116+
values: make(map[value.Value]struct{}),
117+
}
118+
}
119+
112120
func (p *Parameter) Text(v string) Builder {
113121
p.value = value.TextValue(v)
114122
p.parent.params = append(p.parent.params, p)

internal/params/set.go

Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
package params
2+
3+
import (
4+
"time"
5+
6+
"github.com/ydb-platform/ydb-go-sdk/v3/internal/value"
7+
)
8+
9+
type (
10+
set struct {
11+
parent Builder
12+
name string
13+
values map[value.Value]struct{}
14+
}
15+
16+
setItem struct {
17+
parent *set
18+
}
19+
)
20+
21+
func (s *set) AddItem() *setItem {
22+
return &setItem{
23+
parent: s,
24+
}
25+
}
26+
27+
func (s *set) Build() Builder {
28+
values := make([]value.Value, 0, len(s.values))
29+
30+
for el := range s.values {
31+
values = append(values, el)
32+
}
33+
34+
s.parent.params = append(s.parent.params, &Parameter{
35+
parent: s.parent,
36+
name: s.name,
37+
value: value.SetValue(values...),
38+
})
39+
40+
return s.parent
41+
}
42+
43+
func (s *setItem) Text(v string) *set {
44+
s.parent.values[value.TextValue(v)] = struct{}{}
45+
46+
return s.parent
47+
}
48+
49+
func (s *setItem) Bytes(v []byte) *set {
50+
s.parent.values[value.BytesValue(v)] = struct{}{}
51+
52+
return s.parent
53+
}
54+
55+
func (s *setItem) Bool(v bool) *set {
56+
s.parent.values[value.BoolValue(v)] = struct{}{}
57+
58+
return s.parent
59+
}
60+
61+
func (s *setItem) Uint64(v uint64) *set {
62+
s.parent.values[value.Uint64Value(v)] = struct{}{}
63+
64+
return s.parent
65+
}
66+
67+
func (s *setItem) Int64(v int64) *set {
68+
s.parent.values[value.Int64Value(v)] = struct{}{}
69+
70+
return s.parent
71+
}
72+
73+
func (s *setItem) Uint32(v uint32) *set {
74+
s.parent.values[value.Uint32Value(v)] = struct{}{}
75+
76+
return s.parent
77+
}
78+
79+
func (s *setItem) Int32(v int32) *set {
80+
s.parent.values[value.Int32Value(v)] = struct{}{}
81+
82+
return s.parent
83+
}
84+
85+
func (s *setItem) Uint16(v uint16) *set {
86+
s.parent.values[value.Uint16Value(v)] = struct{}{}
87+
88+
return s.parent
89+
}
90+
91+
func (s *setItem) Int16(v int16) *set {
92+
s.parent.values[value.Int16Value(v)] = struct{}{}
93+
94+
return s.parent
95+
}
96+
97+
func (s *setItem) Uint8(v uint8) *set {
98+
s.parent.values[value.Uint8Value(v)] = struct{}{}
99+
100+
return s.parent
101+
}
102+
103+
func (s *setItem) Int8(v int8) *set {
104+
s.parent.values[value.Int8Value(v)] = struct{}{}
105+
106+
return s.parent
107+
}
108+
109+
func (s *setItem) Float(v float32) *set {
110+
s.parent.values[value.FloatValue(v)] = struct{}{}
111+
112+
return s.parent
113+
}
114+
115+
func (s *setItem) Double(v float64) *set {
116+
s.parent.values[value.DoubleValue(v)] = struct{}{}
117+
118+
return s.parent
119+
}
120+
121+
func (s *setItem) Decimal(v [16]byte, precision, scale uint32) *set {
122+
s.parent.values[value.DecimalValue(v, precision, scale)] = struct{}{}
123+
124+
return s.parent
125+
}
126+
127+
func (s *setItem) Timestamp(v time.Time) *set {
128+
s.parent.values[value.TimestampValueFromTime(v)] = struct{}{}
129+
130+
return s.parent
131+
}
132+
133+
func (s *setItem) Date(v time.Time) *set {
134+
s.parent.values[value.DateValueFromTime(v)] = struct{}{}
135+
136+
return s.parent
137+
}
138+
139+
func (s *setItem) Datetime(v time.Time) *set {
140+
s.parent.values[value.DatetimeValueFromTime(v)] = struct{}{}
141+
142+
return s.parent
143+
}
144+
145+
func (s *setItem) Interval(v time.Duration) *set {
146+
s.parent.values[value.IntervalValueFromDuration(v)] = struct{}{}
147+
148+
return s.parent
149+
}

0 commit comments

Comments
 (0)