forked from btnguyen2k/prom
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathexample_aws-dynamodb_query-items.go
61 lines (49 loc) · 2.42 KB
/
example_aws-dynamodb_query-items.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
// go run example_aws-dynamodb_base.go example_aws-dynamodb_query-items.go
package main
import (
"fmt"
"github.com/aws/aws-sdk-go/service/dynamodb/expression"
"github.com/btnguyen2k/prom/dynamodb"
)
func awsDynamodbQueryItems(adc *dynamodb.AwsDynamodbConnect, table string, keyFilter, nonKeyFilter *expression.ConditionBuilder, indexName string) {
if indexName == "" {
fmt.Printf(" Querying items from table [%s] with filter: %v/%v\n", table, keyFilter, nonKeyFilter)
} else {
fmt.Printf(" Querying items from table [%s] on index [%s] with filter: %v/%v\n", table, indexName, keyFilter, nonKeyFilter)
}
result, err := adc.QueryItems(nil, table, keyFilter, nonKeyFilter, indexName)
if err != nil {
fmt.Printf(" Error: %s\n", err)
} else {
fmt.Printf(" Items:\n")
for _, item := range result {
fmt.Println(" ", toJsonDynamodb(item))
}
}
}
func main() {
adc := createAwsDynamodbConnect()
defer adc.Close()
var keyFilter, nonKeyFilter expression.ConditionBuilder
fmt.Println("-== Query Items from Table ==-")
keyFilter = expression.Name("username").Equal(expression.Value("user-0"))
awsDynamodbQueryItems(adc, "test1", &keyFilter, nil, "")
awsDynamodbQueryItems(adc, "test1", &keyFilter, nil, awsDynamodbIndexName)
awsDynamodbQueryItems(adc, "test2", &keyFilter, nil, "")
awsDynamodbQueryItems(adc, "test2", &keyFilter, nil, awsDynamodbIndexName)
keyFilter = expression.Name("email").Equal(expression.Value("[email protected]"))
awsDynamodbQueryItems(adc, "test1", &keyFilter, nil, "")
awsDynamodbQueryItems(adc, "test1", &keyFilter, nil, awsDynamodbIndexName)
awsDynamodbQueryItems(adc, "test2", &keyFilter, nil, "")
awsDynamodbQueryItems(adc, "test2", &keyFilter, nil, awsDynamodbIndexName)
keyFilter = expression.Name("username").Equal(expression.Value("user-0")).And(expression.Name("email").Equal(expression.Value("[email protected]")))
awsDynamodbQueryItems(adc, "test1", &keyFilter, nil, "")
awsDynamodbQueryItems(adc, "test1", &keyFilter, nil, awsDynamodbIndexName)
awsDynamodbQueryItems(adc, "test2", &keyFilter, nil, "")
awsDynamodbQueryItems(adc, "test2", &keyFilter, nil, awsDynamodbIndexName)
keyFilter = expression.Name("username").Equal(expression.Value("user-0"))
nonKeyFilter = expression.Name("m.m.b").Equal(expression.Value(true))
awsDynamodbQueryItems(adc, "test1", &keyFilter, &nonKeyFilter, "")
awsDynamodbQueryItems(adc, "test2", &keyFilter, &nonKeyFilter, "")
fmt.Println(awsDynamodbSep)
}