Skip to content

Commit 95e7587

Browse files
Merge pull request #9 from Trendyol/feature/range-v2
feature: update range v2
2 parents 9b69b17 + d6d9ca1 commit 95e7587

File tree

2 files changed

+32
-45
lines changed

2 files changed

+32
-45
lines changed

es/range.go

Lines changed: 31 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,34 @@ type rangeType Object
2020
// A rangeType object with the specified field ready for defining range conditions.
2121
func Range(key string) rangeType {
2222
return rangeType{
23-
key: Object{},
23+
"range": Object{
24+
key: Object{},
25+
},
2426
}
2527
}
2628

29+
func (r rangeType) putInTheField(key string, value any) rangeType {
30+
if rang, ok := r["range"].(Object); ok {
31+
for field := range rang {
32+
if fieldObject, foOk := rang[field].(Object); foOk {
33+
fieldObject[key] = value
34+
}
35+
}
36+
}
37+
return r
38+
}
39+
40+
func (r rangeType) delete(key string) rangeType {
41+
if rang, ok := r["range"].(Object); ok {
42+
for field := range rang {
43+
if fieldObject, foOk := rang[field].(Object); foOk {
44+
delete(fieldObject, key)
45+
}
46+
}
47+
}
48+
return r
49+
}
50+
2751
// LesserThan sets the "lt" (less than) field for the range query.
2852
//
2953
// This method specifies that the range query should match values that are less than
@@ -42,13 +66,7 @@ func Range(key string) rangeType {
4266
//
4367
// The updated rangeType object with the "lt" field set to the specified value.
4468
func (r rangeType) LesserThan(lt any) rangeType {
45-
for key := range r {
46-
if rangeObject, ok := r[key].(Object); ok {
47-
rangeObject["lt"] = lt
48-
delete(rangeObject, "lte")
49-
}
50-
}
51-
return r
69+
return r.putInTheField("lt", lt).delete("lte")
5270
}
5371

5472
// LesserThanOrEqual sets the "lte" (less than or equal to) field for the range query.
@@ -69,13 +87,7 @@ func (r rangeType) LesserThan(lt any) rangeType {
6987
//
7088
// The updated rangeType object with the "lte" field set to the specified value.
7189
func (r rangeType) LesserThanOrEqual(lte any) rangeType {
72-
for key := range r {
73-
if rangeObject, ok := r[key].(Object); ok {
74-
rangeObject["lte"] = lte
75-
delete(rangeObject, "lt")
76-
}
77-
}
78-
return r
90+
return r.putInTheField("lte", lte).delete("lt")
7991
}
8092

8193
// GreaterThan sets the "gt" (greater than) field for the range query.
@@ -96,13 +108,7 @@ func (r rangeType) LesserThanOrEqual(lte any) rangeType {
96108
//
97109
// The updated rangeType object with the "gt" field set to the specified value.
98110
func (r rangeType) GreaterThan(gt any) rangeType {
99-
for key := range r {
100-
if rangeObject, ok := r[key].(Object); ok {
101-
rangeObject["gt"] = gt
102-
delete(rangeObject, "gte")
103-
}
104-
}
105-
return r
111+
return r.putInTheField("gt", gt).delete("gte")
106112
}
107113

108114
// GreaterThanOrEqual sets the "gte" (greater than or equal to) field for the range query.
@@ -123,13 +129,7 @@ func (r rangeType) GreaterThan(gt any) rangeType {
123129
//
124130
// The updated rangeType object with the "gte" field set to the specified value.
125131
func (r rangeType) GreaterThanOrEqual(gte any) rangeType {
126-
for key := range r {
127-
if rangeObject, ok := r[key].(Object); ok {
128-
rangeObject["gte"] = gte
129-
delete(rangeObject, "gt")
130-
}
131-
}
132-
return r
132+
return r.putInTheField("gte", gte).delete("gt")
133133
}
134134

135135
// Format sets the "format" field for the range query.
@@ -150,12 +150,7 @@ func (r rangeType) GreaterThanOrEqual(gte any) rangeType {
150150
//
151151
// The updated rangeType object with the "format" field set to the specified value.
152152
func (r rangeType) Format(format string) rangeType {
153-
for key := range r {
154-
if rangeObject, ok := r[key].(Object); ok {
155-
rangeObject["format"] = format
156-
}
157-
}
158-
return r
153+
return r.putInTheField("format", format)
159154
}
160155

161156
// Boost sets the "boost" field for the range query.
@@ -175,10 +170,5 @@ func (r rangeType) Format(format string) rangeType {
175170
//
176171
// The updated rangeType object with the "boost" field set to the specified value.
177172
func (r rangeType) Boost(boost float64) rangeType {
178-
for key := range r {
179-
if rangeObject, ok := r[key].(Object); ok {
180-
rangeObject["boost"] = boost
181-
}
182-
}
183-
return r
173+
return r.putInTheField("boost", boost)
184174
}

es/types.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,8 @@ func correctType(b any) (any, bool) {
1414
if b == nil || unsafeIsNil(b) {
1515
return Object{}, false
1616
}
17-
switch b.(type) {
18-
case BoolType:
17+
if _, ok := b.(BoolType); ok {
1918
return Object{"bool": b}, true
20-
case rangeType:
21-
return Object{"range": b}, true
2219
}
2320
return b, true
2421
}

0 commit comments

Comments
 (0)