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;
|
expectedNoOfParams = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case BETWEEN:
|
||||||
|
{
|
||||||
|
clause += " BETWEEN ? AND ? ";
|
||||||
|
expectedNoOfParams = 2;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case NOT_BETWEEN:
|
||||||
|
{
|
||||||
|
clause += " NOT BETWEEN ? AND ? ";
|
||||||
|
expectedNoOfParams = 2;
|
||||||
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
throw new IllegalArgumentException("Unexpected operator: " + criterion.getOperator());
|
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