Skip to content

Commit 437c928

Browse files
committed
chore: update query builder to support like and other keyworlds
Signed-off-by: Otavio Santana <[email protected]>
1 parent a16349d commit 437c928

File tree

2 files changed

+22
-3
lines changed

2 files changed

+22
-3
lines changed

jnosql-oracle-nosql/src/main/java/org/eclipse/jnosql/databases/oracle/communication/AbstractQueryBuilder.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,10 @@ protected void condition(CriteriaCondition condition, StringBuilder query, List<
6565
predicate(query, " >= ", document, params);
6666
return;
6767
case LIKE:
68-
predicate(query, " LIKE ", document, params);
68+
case CONTAINS:
69+
case STARTS_WITH:
70+
case ENDS_WITH:
71+
predicateLike(query, document, params);
6972
return;
7073
case NOT:
7174
query.append(" NOT ");
@@ -134,6 +137,14 @@ protected void predicate(StringBuilder query,
134137
params.add(fieldValue);
135138
}
136139

140+
protected void predicateLike(StringBuilder query,
141+
Element document,
142+
List<FieldValue> params) {
143+
String name = identifierOf(document.name());
144+
Object value = OracleNoSqlLikeConverter.INSTANCE.convert(document.get());
145+
query.append("regex_like(").append(name).append(", \"").append(value).append("\")");
146+
}
147+
137148
protected String identifierOf(String name) {
138149
return ' ' + table + "." + JSON_FIELD + "." + name + ' ';
139150
}

jnosql-oracle-nosql/src/test/java/org/eclipse/jnosql/databases/oracle/communication/OracleNoSQLDocumentManagerTest.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -621,8 +621,16 @@ void shouldFindDocumentLike() {
621621
.build();
622622

623623
List<CommunicationEntity> entitiesFound = entityManager.select(query).collect(Collectors.toList());
624-
assertEquals(2, entitiesFound.size());
625-
assertThat(entitiesFound).contains(entities.get(0), entities.get(2));
624+
625+
SoftAssertions.assertSoftly(soft -> {
626+
soft.assertThat(entitiesFound).hasSize(2);
627+
var names = entitiesFound.stream()
628+
.flatMap(d -> d.find("name").stream())
629+
.map(d -> d.get(String.class))
630+
.toList();
631+
soft.assertThat(names).contains("Lucas", "Luna");
632+
633+
});
626634
}
627635

628636
@Test

0 commit comments

Comments
 (0)