mirror of
https://github.com/Kingsrook/qqq.git
synced 2025-07-18 05:01:07 +00:00
CE-882 Add TRUE and FALSE operators
This commit is contained in:
@ -49,5 +49,7 @@ public enum QCriteriaOperator
|
|||||||
IS_BLANK,
|
IS_BLANK,
|
||||||
IS_NOT_BLANK,
|
IS_NOT_BLANK,
|
||||||
BETWEEN,
|
BETWEEN,
|
||||||
NOT_BETWEEN
|
NOT_BETWEEN,
|
||||||
|
TRUE,
|
||||||
|
FALSE
|
||||||
}
|
}
|
||||||
|
@ -179,6 +179,8 @@ public class BackendQueryFilterUtils
|
|||||||
boolean between = (testGreaterThan(criteria0, value) || testEquals(criteria0, value)) && (!testGreaterThan(criteria1, value) || testEquals(criteria1, value));
|
boolean between = (testGreaterThan(criteria0, value) || testEquals(criteria0, value)) && (!testGreaterThan(criteria1, value) || testEquals(criteria1, value));
|
||||||
yield !between;
|
yield !between;
|
||||||
}
|
}
|
||||||
|
case TRUE -> true;
|
||||||
|
case FALSE -> false;
|
||||||
};
|
};
|
||||||
return criterionMatches;
|
return criterionMatches;
|
||||||
}
|
}
|
||||||
|
@ -224,6 +224,9 @@ class MemoryBackendModuleTest extends BaseTest
|
|||||||
));
|
));
|
||||||
new InsertAction().execute(insertInput);
|
new InsertAction().execute(insertInput);
|
||||||
|
|
||||||
|
assertEquals(3, queryShapes(qInstance, table, session, new QFilterCriteria("id", QCriteriaOperator.TRUE)).size());
|
||||||
|
assertEquals(0, queryShapes(qInstance, table, session, new QFilterCriteria("id", QCriteriaOperator.FALSE)).size());
|
||||||
|
|
||||||
assertEquals(2, queryShapes(qInstance, table, session, new QFilterCriteria("id", QCriteriaOperator.IN, List.of(1, 2))).size());
|
assertEquals(2, queryShapes(qInstance, table, session, new QFilterCriteria("id", QCriteriaOperator.IN, List.of(1, 2))).size());
|
||||||
assertEquals(1, queryShapes(qInstance, table, session, new QFilterCriteria("id", QCriteriaOperator.IN, List.of(3, 4))).size());
|
assertEquals(1, queryShapes(qInstance, table, session, new QFilterCriteria("id", QCriteriaOperator.IN, List.of(3, 4))).size());
|
||||||
|
|
||||||
|
@ -626,6 +626,8 @@ public class AbstractMongoDBAction
|
|||||||
case IS_NOT_BLANK -> Filters.nor(filterIsBlank(fieldBackendName));
|
case IS_NOT_BLANK -> Filters.nor(filterIsBlank(fieldBackendName));
|
||||||
case BETWEEN -> filterBetween(fieldBackendName, values);
|
case BETWEEN -> filterBetween(fieldBackendName, values);
|
||||||
case NOT_BETWEEN -> Filters.nor(filterBetween(fieldBackendName, values));
|
case NOT_BETWEEN -> Filters.nor(filterBetween(fieldBackendName, values));
|
||||||
|
case TRUE -> Filters.or(Filters.eq(fieldBackendName, "true"), Filters.ne(fieldBackendName, "true"), Filters.eq(fieldBackendName, null)); // todo test!!
|
||||||
|
case FALSE -> Filters.and(Filters.eq(fieldBackendName, "true"), Filters.ne(fieldBackendName, "true"), Filters.eq(fieldBackendName, null));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -213,6 +213,33 @@ class MongoDBQueryActionTest extends BaseTest
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
**
|
||||||
|
*******************************************************************************/
|
||||||
|
@Test
|
||||||
|
public void testTrueQuery() throws QException
|
||||||
|
{
|
||||||
|
QueryInput queryInput = initQueryRequest();
|
||||||
|
queryInput.setFilter(new QQueryFilter(new QFilterCriteria("email", QCriteriaOperator.TRUE)));
|
||||||
|
QueryOutput queryOutput = new MongoDBQueryAction().execute(queryInput);
|
||||||
|
assertEquals(5, queryOutput.getRecords().size(), "'TRUE' query should find all rows");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
**
|
||||||
|
*******************************************************************************/
|
||||||
|
@Test
|
||||||
|
public void testFalseQuery() throws QException
|
||||||
|
{
|
||||||
|
QueryInput queryInput = initQueryRequest();
|
||||||
|
queryInput.setFilter(new QQueryFilter(new QFilterCriteria("email", QCriteriaOperator.FALSE)));
|
||||||
|
QueryOutput queryOutput = new MongoDBQueryAction().execute(queryInput);
|
||||||
|
assertEquals(0, queryOutput.getRecords().size(), "'FALSE' query should find no rows");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
**
|
**
|
||||||
|
@ -42,7 +42,6 @@ import java.util.stream.Collectors;
|
|||||||
import com.kingsrook.qqq.backend.core.actions.ActionHelper;
|
import com.kingsrook.qqq.backend.core.actions.ActionHelper;
|
||||||
import com.kingsrook.qqq.backend.core.actions.values.QValueFormatter;
|
import com.kingsrook.qqq.backend.core.actions.values.QValueFormatter;
|
||||||
import com.kingsrook.qqq.backend.core.context.QContext;
|
import com.kingsrook.qqq.backend.core.context.QContext;
|
||||||
import com.kingsrook.qqq.backend.core.exceptions.QException;
|
|
||||||
import com.kingsrook.qqq.backend.core.exceptions.QValueException;
|
import com.kingsrook.qqq.backend.core.exceptions.QValueException;
|
||||||
import com.kingsrook.qqq.backend.core.logging.QLogger;
|
import com.kingsrook.qqq.backend.core.logging.QLogger;
|
||||||
import com.kingsrook.qqq.backend.core.model.actions.AbstractTableActionInput;
|
import com.kingsrook.qqq.backend.core.model.actions.AbstractTableActionInput;
|
||||||
@ -592,9 +591,17 @@ public abstract class AbstractRDBMSAction
|
|||||||
expectedNoOfParams = 2;
|
expectedNoOfParams = 2;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
case TRUE:
|
||||||
{
|
{
|
||||||
throw new IllegalArgumentException("Unexpected operator: " + criterion.getOperator());
|
clause = " 1 = 1 ";
|
||||||
|
expectedNoOfParams = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case FALSE:
|
||||||
|
{
|
||||||
|
clause = " 0 = 1 ";
|
||||||
|
expectedNoOfParams = 0;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -99,6 +99,34 @@ public class RDBMSQueryActionTest extends RDBMSActionTest
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
**
|
||||||
|
*******************************************************************************/
|
||||||
|
@Test
|
||||||
|
public void testTrueQuery() throws QException
|
||||||
|
{
|
||||||
|
QueryInput queryInput = initQueryRequest();
|
||||||
|
queryInput.setFilter(new QQueryFilter(new QFilterCriteria("email", QCriteriaOperator.TRUE)));
|
||||||
|
QueryOutput queryOutput = new RDBMSQueryAction().execute(queryInput);
|
||||||
|
assertEquals(5, queryOutput.getRecords().size(), "'TRUE' query should find all rows");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
**
|
||||||
|
*******************************************************************************/
|
||||||
|
@Test
|
||||||
|
public void testFalseQuery() throws QException
|
||||||
|
{
|
||||||
|
QueryInput queryInput = initQueryRequest();
|
||||||
|
queryInput.setFilter(new QQueryFilter(new QFilterCriteria("email", QCriteriaOperator.FALSE)));
|
||||||
|
QueryOutput queryOutput = new RDBMSQueryAction().execute(queryInput);
|
||||||
|
assertEquals(0, queryOutput.getRecords().size(), "'FALSE' query should find no rows");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
**
|
**
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
Reference in New Issue
Block a user