Skip to content

Commit e4a1b89

Browse files
committed
Some extra query range functions
1 parent 2be3173 commit e4a1b89

File tree

2 files changed

+49
-1
lines changed

2 files changed

+49
-1
lines changed

src/lib/support/querySupport.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,36 @@ import { SkQueryRange } from '../singleEntityOperations'
88
// These ranges can be used both for table and GSI queries since the #sk expression attribute name
99
// is replaced with either the table or GSI SK attribute name depending on how the query is executed
1010

11+
export function rangeWhereSkEquals(sk: string): SkQueryRange {
12+
return queryRange('#sk = :sk', {
13+
':sk': sk
14+
})
15+
}
16+
1117
export function rangeWhereSkGreaterThan(sk: string): SkQueryRange {
1218
return queryRange('#sk > :sk', {
1319
':sk': sk
1420
})
1521
}
1622

23+
export function rangeWhereSkGreaterThanOrEquals(sk: string): SkQueryRange {
24+
return queryRange('#sk >= :sk', {
25+
':sk': sk
26+
})
27+
}
28+
1729
export function rangeWhereSkLessThan(sk: string): SkQueryRange {
1830
return queryRange('#sk < :sk', {
1931
':sk': sk
2032
})
2133
}
2234

35+
export function rangeWhereSkLessThanOrEquals(sk: string): SkQueryRange {
36+
return queryRange('#sk <= :sk', {
37+
':sk': sk
38+
})
39+
}
40+
2341
export function rangeWhereSkBetween(from: string, to: string): SkQueryRange {
2442
return queryRange('#sk BETWEEN :from AND :to', {
2543
':from': from,

test/unit/support/querySupport.test.ts

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,22 @@ import { expect, test } from 'vitest'
22
import {
33
rangeWhereSkBeginsWith,
44
rangeWhereSkBetween,
5+
rangeWhereSkEquals,
56
rangeWhereSkGreaterThan,
6-
rangeWhereSkLessThan
7+
rangeWhereSkGreaterThanOrEquals,
8+
rangeWhereSkLessThan,
9+
rangeWhereSkLessThanOrEquals
710
} from '../../../src/lib/support/querySupport'
811

12+
test('skEquals', () => {
13+
expect(rangeWhereSkEquals('FIELD#aaa')).toEqual({
14+
skConditionExpressionClause: '#sk = :sk',
15+
expressionAttributeValues: {
16+
':sk': 'FIELD#aaa'
17+
}
18+
})
19+
})
20+
921
test('skGreaterThan', () => {
1022
expect(rangeWhereSkGreaterThan('FIELD#aaa')).toEqual({
1123
skConditionExpressionClause: '#sk > :sk',
@@ -15,6 +27,15 @@ test('skGreaterThan', () => {
1527
})
1628
})
1729

30+
test('skGreaterThanOrEquals', () => {
31+
expect(rangeWhereSkGreaterThanOrEquals('FIELD#aaa')).toEqual({
32+
skConditionExpressionClause: '#sk >= :sk',
33+
expressionAttributeValues: {
34+
':sk': 'FIELD#aaa'
35+
}
36+
})
37+
})
38+
1839
test('skLessThan', () => {
1940
expect(rangeWhereSkLessThan('FIELD#aaa')).toEqual({
2041
skConditionExpressionClause: '#sk < :sk',
@@ -24,6 +45,15 @@ test('skLessThan', () => {
2445
})
2546
})
2647

48+
test('skLessThanOrEquals', () => {
49+
expect(rangeWhereSkLessThanOrEquals('FIELD#aaa')).toEqual({
50+
skConditionExpressionClause: '#sk <= :sk',
51+
expressionAttributeValues: {
52+
':sk': 'FIELD#aaa'
53+
}
54+
})
55+
})
56+
2757
test('skBetween', () => {
2858
expect(rangeWhereSkBetween('FIELD#aaa', 'FIELD#zzz')).toEqual({
2959
skConditionExpressionClause: '#sk BETWEEN :from AND :to',

0 commit comments

Comments
 (0)