Skip to content

Commit

Permalink
Add keyword support for Greater than equal, #144.
Browse files Browse the repository at this point in the history
Signed-off-by: Pan Li <panli@microsoft.com>
  • Loading branch information
Incarnation-p-lee committed Aug 22, 2018
1 parent 4d76ed4 commit c5d8b9a
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ private String generateQueryBody(@NonNull Criteria criteria, @NonNull List<Pair<
case BEFORE:
case AFTER:
case GREATER_THAN:
case GREATER_THAN_EQUAL:
return this.generateUnaryQuery(criteria, parameters);
case AND:
case OR:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@ public enum CriteriaType {
AND("AND"),
BEFORE("<"),
AFTER(">"),
GREATER_THAN(">");
GREATER_THAN(">"),
GREATER_THAN_EQUAL(">=");

@Getter
private String sqlKeyword;
Expand All @@ -38,6 +39,7 @@ public enum CriteriaType {
map.put(Part.Type.BEFORE, CriteriaType.BEFORE);
map.put(Part.Type.AFTER, CriteriaType.AFTER);
map.put(Part.Type.GREATER_THAN, CriteriaType.GREATER_THAN);
map.put(Part.Type.GREATER_THAN_EQUAL, CriteriaType.GREATER_THAN_EQUAL);

PART_TREE_TYPE_TO_CRITERIA = Collections.unmodifiableMap(map);
}
Expand Down Expand Up @@ -100,6 +102,7 @@ public static boolean isUnary(CriteriaType type) {
case BEFORE:
case AFTER:
case GREATER_THAN:
case GREATER_THAN_EQUAL:
return true;
default:
return false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,12 +47,14 @@ public class ProjectRepositoryIT {
private static final Long STAR_COUNT_1 = 1L;
private static final Long STAR_COUNT_2 = 2L;
private static final Long STAR_COUNT_3 = 3L;
private static final Long STAR_COUNT_MAX = 100L;

private static final Long FORK_COUNT_0 = 0L;
private static final Long FORK_COUNT_1 = 1L;
private static final Long FORK_COUNT_2 = 2L;
private static final Long FORK_COUNT_3 = 3L;
private static final Long FAKE_COUNT = 123234L;
private static final Long FORK_COUNT_MAX = 100L;

private static final Project PROJECT_0 = new Project(ID_0, NAME_0, CREATOR_0, true, STAR_COUNT_0, FORK_COUNT_0);
private static final Project PROJECT_1 = new Project(ID_1, NAME_1, CREATOR_1, true, STAR_COUNT_1, FORK_COUNT_1);
Expand Down Expand Up @@ -279,4 +281,38 @@ public void testFindByGreaterThanWithAndOr() {
Assert.assertEquals(projects.size(), reference.size());
Assert.assertEquals(projects, reference);
}

@Test
public void testFindByGreaterThanEqual() {
List<Project> projects = repository.findByStarCountGreaterThanEqual(STAR_COUNT_MAX);

Assert.assertTrue(projects.isEmpty());

projects = repository.findByStarCountGreaterThanEqual(STAR_COUNT_2);

final List<Project> reference = Arrays.asList(PROJECT_2, PROJECT_3);

projects.sort(Comparator.comparing(Project::getId));
reference.sort(Comparator.comparing(Project::getId));

Assert.assertEquals(projects.size(), reference.size());
Assert.assertEquals(projects, reference);
}

@Test
public void testFindByGreaterThanEqualAnd() {
List<Project> projects = repository.findByForkCountGreaterThanEqualAndCreator(FORK_COUNT_MAX, CREATOR_2);

Assert.assertTrue(projects.isEmpty());

projects = repository.findByForkCountGreaterThanEqualAndCreator(FORK_COUNT_0, CREATOR_0);

final List<Project> reference = Arrays.asList(PROJECT_0, PROJECT_4);

projects.sort(Comparator.comparing(Project::getId));
reference.sort(Comparator.comparing(Project::getId));

Assert.assertEquals(projects.size(), reference.size());
Assert.assertEquals(projects, reference);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,8 @@ List<Project> findByNameOrCreatorAndForkCountOrStarCount(String name, String cre
List<Project> findByNameAndCreator(String name, String creator, Sort sort);

List<Project> findByForkCount(Long forkCount, Sort sort);

List<Project> findByStarCountGreaterThanEqual(Long count);

List<Project> findByForkCountGreaterThanEqualAndCreator(Long count, String creator);
}

0 comments on commit c5d8b9a

Please sign in to comment.