Skip to content

Commit

Permalink
Merge pull request #11 from jeansossmeier/feature/version-2.2.4
Browse files Browse the repository at this point in the history
Fix metadata collector double quoted value normalization for single digits
  • Loading branch information
jeansossmeier authored Jul 12, 2024
2 parents 62e353d + 720af7a commit 97243d0
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 9 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>com.intuit.graphql</groupId>
<artifactId>graphql-filter-java</artifactId>
<version>2.2.3</version>
<version>2.2.4</version>

<name>${project.artifactId}</name>
<description>A java library to transform graphql filter into database filter</description>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -294,18 +294,27 @@ private String formatCustomBinaryExpression(
private void collectMetadata(final String metaDataType, final String[] filterValues) {
final List<String> filterValueList = new ArrayList<>();
for (String filterValue : filterValues) {
final String normalizedFilterValue =
filterValue.replace(DOUBLE_QUOTE, ESCAPED_DOUBLE_QUOTE);
filterValueList.add(
new StringBuilder()
.append(DOUBLE_QUOTE)
.append(normalizedFilterValue, 1, normalizedFilterValue.length() - 1)
.append(DOUBLE_QUOTE)
.toString());
if (filterValue.contains(DOUBLE_QUOTE)) {
filterValueList.add(normalizeDoubleQuotes(filterValue));
} else {
filterValueList.add(filterValue);
}
}

metadataCollector.put(metadataPrefix + metaDataType, filterValueList);
}

private String normalizeDoubleQuotes(String filterValue) {
final String normalizedFilterValue =
filterValue.replace(DOUBLE_QUOTE, ESCAPED_DOUBLE_QUOTE);

return new StringBuilder()
.append(DOUBLE_QUOTE)
.append(normalizedFilterValue, 1, normalizedFilterValue.length() - 1)
.append(DOUBLE_QUOTE)
.toString();
}

private boolean isJsonQueryString(String queryString) {
return queryString.startsWith("'{") && queryString.endsWith("}'");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,15 @@ public class TestConstants {
" age\n" +
" }\n" +
"}";

public static final String BINARY_FILER_SINGLE_DIGIT_INT = "{\n" +
" searchEmployees (filter : { age: {gte: 5}}) {\n" +
" firstName\n" +
" lastName\n" +
" age\n" +
" }\n" +
"}";

public static final String COMPOUND_FILER_WITH_OR = "{\n" +
" searchEmployees (filter : {\n" +
" or : [{ firstName : {contains : \"Saurabh\"}},{ lastName : {equals : \"Jaiswal\"}}]\n" +
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,15 @@ public void filterExpressionSimple() {
Assert.assertEquals(expectedExpression,getEmployeeDataFetcher().getSqlExpression());
}

@Test
public void filterExpressionSimpleSingleDigitInt() {
ExecutionResult result = getGraphQL().execute(TestConstants.BINARY_FILER_SINGLE_DIGIT_INT);

String expectedExpression = "WHERE (age >= 5)";

Assert.assertEquals(expectedExpression,getEmployeeDataFetcher().getSqlExpression());
}

@Test
public void filterExpressionWithOR() {
ExecutionResult result = getGraphQL().execute(TestConstants.COMPOUND_FILER_WITH_OR);
Expand Down

0 comments on commit 97243d0

Please sign in to comment.