mirror of
https://github.com/Kingsrook/qqq.git
synced 2025-07-18 13:10:44 +00:00
Add subFilterSetOperator (e.g., UNION, INTERSECT, EXCEPT) to QQueryFilter - along with implementation in RDBMS module, to generate such queries
This commit is contained in:
@ -55,6 +55,16 @@ public class QQueryFilter implements Serializable, Cloneable
|
||||
private BooleanOperator booleanOperator = BooleanOperator.AND;
|
||||
private List<QQueryFilter> subFilters = new ArrayList<>();
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// initial intent here was - put, e.g., UNION between multiple SELECT (with the individual selects being defined in subFilters) //
|
||||
// but, actually SQL would let us do, e.g., SELECT UNION SELECT INTERSECT SELECT //
|
||||
// so - we could see a future implementation where we: //
|
||||
// - used the top-level subFilterSetOperator to indicate hat we are doing a multi-query set-operation query. //
|
||||
// - looked within the subFilter, to see if it specified a subFilterSetOperator - and use that operator before that query //
|
||||
// but - in v0, just using the one at the top-level works //
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
private SubFilterSetOperator subFilterSetOperator = null;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// skip & limit are meant to only apply to QueryAction (at least at the initial time they are added here) //
|
||||
// e.g., they are ignored in CountAction, AggregateAction, etc, where their meanings may be less obvious //
|
||||
@ -75,6 +85,19 @@ public class QQueryFilter implements Serializable, Cloneable
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
*******************************************************************************/
|
||||
public enum SubFilterSetOperator
|
||||
{
|
||||
UNION,
|
||||
UNION_ALL,
|
||||
INTERSECT,
|
||||
EXCEPT
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Constructor
|
||||
**
|
||||
@ -799,4 +822,35 @@ public class QQueryFilter implements Serializable, Cloneable
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Getter for subFilterSetOperator
|
||||
*******************************************************************************/
|
||||
public SubFilterSetOperator getSubFilterSetOperator()
|
||||
{
|
||||
return (this.subFilterSetOperator);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Setter for subFilterSetOperator
|
||||
*******************************************************************************/
|
||||
public void setSubFilterSetOperator(SubFilterSetOperator subFilterSetOperator)
|
||||
{
|
||||
this.subFilterSetOperator = subFilterSetOperator;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Fluent setter for subFilterSetOperator
|
||||
*******************************************************************************/
|
||||
public QQueryFilter withSubFilterSetOperator(SubFilterSetOperator subFilterSetOperator)
|
||||
{
|
||||
this.subFilterSetOperator = subFilterSetOperator;
|
||||
return (this);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user