mirror of
https://github.com/Kingsrook/qqq.git
synced 2025-07-18 13:10:44 +00:00
Add BETWEEN, NOT_BETWEEN
This commit is contained in:
@ -283,6 +283,18 @@ public class RDBMSQueryAction extends AbstractRDBMSAction implements QueryInterf
|
||||
expectedNoOfParams = 0;
|
||||
break;
|
||||
}
|
||||
case BETWEEN:
|
||||
{
|
||||
clause += " BETWEEN ? AND ? ";
|
||||
expectedNoOfParams = 2;
|
||||
break;
|
||||
}
|
||||
case NOT_BETWEEN:
|
||||
{
|
||||
clause += " NOT BETWEEN ? AND ? ";
|
||||
expectedNoOfParams = 2;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
throw new IllegalArgumentException("Unexpected operator: " + criterion.getOperator());
|
||||
|
@ -346,6 +346,46 @@ public class RDBMSQueryActionTest extends RDBMSActionTest
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
*******************************************************************************/
|
||||
@Test
|
||||
public void testBetweenQuery() throws QException
|
||||
{
|
||||
QueryRequest queryRequest = initQueryRequest();
|
||||
queryRequest.setFilter(new QQueryFilter()
|
||||
.withCriteria(new QFilterCriteria()
|
||||
.withFieldName("id")
|
||||
.withOperator(QCriteriaOperator.BETWEEN)
|
||||
.withValues(List.of(2, 4))
|
||||
));
|
||||
QueryResult queryResult = new RDBMSQueryAction().execute(queryRequest);
|
||||
Assertions.assertEquals(3, queryResult.getRecords().size(), "Expected # of rows");
|
||||
Assertions.assertTrue(queryResult.getRecords().stream().allMatch(r -> r.getValueInteger("id").equals(2) || r.getValueInteger("id").equals(3) || r.getValueInteger("id").equals(4)), "Should find expected ids");
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
*******************************************************************************/
|
||||
@Test
|
||||
public void testNotBetweenQuery() throws QException
|
||||
{
|
||||
QueryRequest queryRequest = initQueryRequest();
|
||||
queryRequest.setFilter(new QQueryFilter()
|
||||
.withCriteria(new QFilterCriteria()
|
||||
.withFieldName("id")
|
||||
.withOperator(QCriteriaOperator.NOT_BETWEEN)
|
||||
.withValues(List.of(2, 4))
|
||||
));
|
||||
QueryResult queryResult = new RDBMSQueryAction().execute(queryRequest);
|
||||
Assertions.assertEquals(2, queryResult.getRecords().size(), "Expected # of rows");
|
||||
Assertions.assertTrue(queryResult.getRecords().stream().allMatch(r -> r.getValueInteger("id").equals(1) || r.getValueInteger("id").equals(5)), "Should find expected ids");
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
*******************************************************************************/
|
||||
|
Reference in New Issue
Block a user