Skip to content

Commit a6cec8d

Browse files
author
Michael Wyraz
committed
Support for existsBy projection
Fixes #93
1 parent deef49a commit a6cec8d

File tree

2 files changed

+30
-10
lines changed

2 files changed

+30
-10
lines changed

src/main/java/org/socialsignin/spring/data/dynamodb/repository/query/AbstractDynamoDBQuery.java

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ else if (method.isSliceQuery() && !isSingleEntityResultsRestriction()) {
6767
protected abstract Query<T> doCreateQuery(Object[] values);
6868
protected abstract Query<Long> doCreateCountQuery(Object[] values,boolean pageQuery);
6969
protected abstract boolean isCountQuery();
70+
protected abstract boolean isExistsQuery();
7071

7172
protected abstract Integer getResultsRestrictionIfApplicable();
7273
protected abstract boolean isSingleEntityResultsRestriction();
@@ -250,10 +251,18 @@ public Object execute(AbstractDynamoDBQuery<T, ID> dynamoDBQuery, Object[] value
250251
{
251252
return dynamoDBQuery.doCreateCountQueryWithPermissions(values,false).getSingleResult();
252253
}
253-
else
254-
{
255-
return dynamoDBQuery.doCreateQueryWithPermissions(values).getSingleResult();
256-
}
254+
else
255+
{
256+
Object result = dynamoDBQuery.doCreateQueryWithPermissions(values).getSingleResult();
257+
if (isExistsQuery())
258+
{
259+
return result==null ? Boolean.FALSE : Boolean.TRUE;
260+
}
261+
else
262+
{
263+
return result;
264+
}
265+
}
257266

258267
}
259268
}
@@ -269,8 +278,14 @@ public Object execute(AbstractDynamoDBQuery<T, ID> dynamoDBQuery, Object[] value
269278
else
270279
{
271280
List<T> resultList = dynamoDBQuery.doCreateQueryWithPermissions(values).getResultList();
272-
return resultList.size() == 0 ? null : resultList.get(0);
273-
281+
if (isExistsQuery())
282+
{
283+
return resultList.isEmpty() ? Boolean.FALSE : Boolean.TRUE;
284+
}
285+
else
286+
{
287+
return resultList.isEmpty() ? null : resultList.get(0);
288+
}
274289
}
275290

276291
}

src/main/java/org/socialsignin/spring/data/dynamodb/repository/query/PartTreeDynamoDBQuery.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,10 +75,15 @@ public Query<Long> doCreateCountQuery(Object[] values,boolean pageQuery) {
7575

7676
}
7777

78-
@Override
79-
protected boolean isCountQuery() {
80-
return tree.isCountProjection();
81-
}
78+
@Override
79+
protected boolean isCountQuery() {
80+
return tree.isCountProjection();
81+
}
82+
83+
@Override
84+
protected boolean isExistsQuery() {
85+
return tree.isExistsProjection();
86+
}
8287

8388
@Override
8489
protected Integer getResultsRestrictionIfApplicable() {

0 commit comments

Comments
 (0)