Skip to content

Commit

Permalink
feat: (feature/dynamodb/expression) re-add IsSet methods (#1329)
Browse files Browse the repository at this point in the history
* feat: (feature/dynamodb/expression) readd IsSet methods

These changes were present in an older version of the expression package before it was moved, originally added in #494, when the expression library was reintroduce in #981 these changes werent included for some reason, but the need for checking if a condition is set or not still exists

* Add Change Annotation

Co-authored-by: Sean McGrail <[email protected]>
  • Loading branch information
zaquestion and skmcgrail authored Jul 21, 2021
1 parent f61b29d commit 356398e
Show file tree
Hide file tree
Showing 5 changed files with 90 additions and 0 deletions.
8 changes: 8 additions & 0 deletions .changelog/8e261b4b5633485cad821d38e2677e46.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"id": "8e261b4b-5633-485c-ad82-1d38e2677e46",
"type": "feature",
"description": "Add IsSet helper for ConditionBuilder and KeyConditionBuilder ([#1329](https://github.com/aws/aws-sdk-go-v2/pull/1329))",
"modules": [
"feature/dynamodb/expression"
]
}
14 changes: 14 additions & 0 deletions feature/dynamodb/expression/condition.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,20 @@ type ConditionBuilder struct {
mode conditionMode
}

// IsSet returns true if the ConditionBuilder is set and returns false
// otherwise. A zero value of a ConditionBuilder returns false.
//
// Example:
//
// var condition expression.ConditionBuilder
// condition.IsSet() // returns false
//
// condition := expression.Equal(expression.Name("foo"), expression.Value(5))
// condition.IsSet() // returns true
func (cb ConditionBuilder) IsSet() bool {
return cb.mode != unsetCond
}

// Equal returns a ConditionBuilder representing the equality clause of the two
// argument OperandBuilders. The resulting ConditionBuilder can be used as a
// part of other Condition Expressions or as an argument to the WithCondition()
Expand Down
27 changes: 27 additions & 0 deletions feature/dynamodb/expression/condition_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,33 @@ const (
invalidConditionOperand = "BuildOperand error"
)

//IsSet
func TestIsSet(t *testing.T) {
cases := []struct {
name string
input ConditionBuilder
expected bool
}{
{
name: "set",
input: Equal(Name("foo"), Value("bar")),
expected: true,
},
{
name: "unset",
input: ConditionBuilder{},
expected: false,
},
}
for _, c := range cases {
t.Run(c.name, func(t *testing.T) {
if actual := c.input.IsSet(); actual != c.expected {
t.Errorf("expected %t, got %t", c.expected, actual)
}
})
}
}

//Compare
func TestCompare(t *testing.T) {
cases := []struct {
Expand Down
14 changes: 14 additions & 0 deletions feature/dynamodb/expression/key_condition.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,20 @@ func KeyEqual(keyBuilder KeyBuilder, valueBuilder ValueBuilder) KeyConditionBuil
}
}

// IsSet returns true if the KeyConditionBuilder is set and returns
// false otherwise. A zero value of a KeyConditionBuilder returns false.
//
// Example:
//
// var keyCondition expression.KeyConditionBuilder
// keyCondition.IsSet() // returns false
//
// keyCondition := expression.KeyEqual(expression.Key("foo"), expression.Value(5))
// keyCondition.IsSet() // returns true
func (kcb KeyConditionBuilder) IsSet() bool {
return kcb.mode != unsetKeyCond
}

// Equal returns a KeyConditionBuilder representing the equality clause of
// the two argument OperandBuilders. The resulting KeyConditionBuilder can be
// used as a part of other Key Condition Expressions or as an argument to the
Expand Down
27 changes: 27 additions & 0 deletions feature/dynamodb/expression/key_condition_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,33 @@ const (
invalidKeyConditionFormat = "buildKeyCondition error: invalid key condition constructed"
)

//IsSet
func TestKeyIsSet(t *testing.T) {
cases := []struct {
name string
input KeyConditionBuilder
expected bool
}{
{
name: "set",
input: KeyEqual(Key("foo"), Value("bar")),
expected: true,
},
{
name: "unset",
input: KeyConditionBuilder{},
expected: false,
},
}
for _, c := range cases {
t.Run(c.name, func(t *testing.T) {
if actual := c.input.IsSet(); actual != c.expected {
t.Errorf("expected %t, got %t", c.expected, actual)
}
})
}
}

func TestKeyCompare(t *testing.T) {
cases := []struct {
name string
Expand Down

0 comments on commit 356398e

Please sign in to comment.