-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathquery.go
94 lines (79 loc) · 2.03 KB
/
query.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
package djoemo
// Operator is an operation to apply comparisons.
type Operator string
// Operators used for comparing against the range key.
const (
Equal Operator = "EQ"
NotEqual = "NE"
Less = "LT"
LessOrEqual = "LE"
Greater = "GT"
GreaterOrEqual = "GE"
BeginsWith = "BEGINS_WITH"
Between = "BETWEEN"
)
type query struct {
key
rangeOp Operator
descending bool
limit *int64
}
// Key factory method to create struct that implements key interface
func Query() *query {
return &query{}
}
// WithTableName set djoemo key table name
func (q *query) WithTableName(tableName string) *query {
q.tableName = tableName
return q
}
// WithHashKeyName set djoemo key hash key name
func (q *query) WithHashKeyName(hashKeyName string) *query {
q.hashKeyName = &hashKeyName
return q
}
// WithRangeKeyName set djoemo key range key name
func (q *query) WithRangeKeyName(rangeKeyName string) *query {
q.rangeKeyName = &rangeKeyName
return q
}
// WithHashKey set djoemo key hash key value
func (q *query) WithHashKey(hashKey interface{}) *query {
q.hashKey = hashKey
return q
}
// WithRangeKey set djoemo key range key value
func (q *query) WithRangeKey(rangeKey interface{}) *query {
q.rangeKey = rangeKey
return q
}
// WithRangeKey set djoemo key range key value
func (q *query) WithRangeOp(rangeOp Operator) *query {
q.rangeOp = rangeOp
return q
}
// WithLimit set djoemo query limit
func (q *query) WithLimit(limit int64) *query {
q.limit = &limit
return q
}
// WithDescending set djoemo query desnding to true
func (q *query) WithDescending() *query {
q.descending = true
return q
}
// RangeRangeOperator returns the operator used for comparing against the range key
func (q *query) RangeOp() Operator {
if q.rangeOp == "" {
return Equal
}
return q.rangeOp
}
// Limit returns the result limit
func (q *query) Limit() *int64 {
return q.limit
}
// Descending returns scan direction
func (q *query) Descending() bool {
return q.descending
}