mirror of
https://github.com/Kingsrook/qqq.git
synced 2025-07-18 05:01:07 +00:00
Add capability: QUERY_STATS; rework capabilities to be smarter w/ enable, then disable
This commit is contained in:
@ -22,7 +22,6 @@
|
||||
package com.kingsrook.qqq.backend.core.model.metadata;
|
||||
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
||||
@ -59,6 +58,10 @@ public class QBackendMetaData
|
||||
*******************************************************************************/
|
||||
public QBackendMetaData()
|
||||
{
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// by default, we will turn off the query stats capability on all backends //
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
withoutCapability(Capability.QUERY_STATS);
|
||||
}
|
||||
|
||||
|
||||
@ -199,6 +202,10 @@ public class QBackendMetaData
|
||||
public void setEnabledCapabilities(Set<Capability> enabledCapabilities)
|
||||
{
|
||||
this.enabledCapabilities = enabledCapabilities;
|
||||
if(this.disabledCapabilities != null)
|
||||
{
|
||||
this.disabledCapabilities.removeAll(enabledCapabilities);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -209,7 +216,7 @@ public class QBackendMetaData
|
||||
*******************************************************************************/
|
||||
public QBackendMetaData withEnabledCapabilities(Set<Capability> enabledCapabilities)
|
||||
{
|
||||
this.enabledCapabilities = enabledCapabilities;
|
||||
setEnabledCapabilities(enabledCapabilities);
|
||||
return (this);
|
||||
}
|
||||
|
||||
@ -221,7 +228,10 @@ public class QBackendMetaData
|
||||
*******************************************************************************/
|
||||
public QBackendMetaData withCapabilities(Set<Capability> enabledCapabilities)
|
||||
{
|
||||
this.enabledCapabilities = enabledCapabilities;
|
||||
for(Capability enabledCapability : enabledCapabilities)
|
||||
{
|
||||
withCapability(enabledCapability);
|
||||
}
|
||||
return (this);
|
||||
}
|
||||
|
||||
@ -238,6 +248,7 @@ public class QBackendMetaData
|
||||
this.enabledCapabilities = new HashSet<>();
|
||||
}
|
||||
this.enabledCapabilities.add(capability);
|
||||
this.disabledCapabilities.remove(capability);
|
||||
return (this);
|
||||
}
|
||||
|
||||
@ -249,11 +260,10 @@ public class QBackendMetaData
|
||||
*******************************************************************************/
|
||||
public QBackendMetaData withCapabilities(Capability... enabledCapabilities)
|
||||
{
|
||||
if(this.enabledCapabilities == null)
|
||||
for(Capability enabledCapability : enabledCapabilities)
|
||||
{
|
||||
this.enabledCapabilities = new HashSet<>();
|
||||
withCapability(enabledCapability);
|
||||
}
|
||||
this.enabledCapabilities.addAll(Arrays.stream(enabledCapabilities).toList());
|
||||
return (this);
|
||||
}
|
||||
|
||||
@ -277,6 +287,10 @@ public class QBackendMetaData
|
||||
public void setDisabledCapabilities(Set<Capability> disabledCapabilities)
|
||||
{
|
||||
this.disabledCapabilities = disabledCapabilities;
|
||||
if(this.enabledCapabilities != null)
|
||||
{
|
||||
this.enabledCapabilities.removeAll(disabledCapabilities);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -287,7 +301,7 @@ public class QBackendMetaData
|
||||
*******************************************************************************/
|
||||
public QBackendMetaData withDisabledCapabilities(Set<Capability> disabledCapabilities)
|
||||
{
|
||||
this.disabledCapabilities = disabledCapabilities;
|
||||
setDisabledCapabilities(disabledCapabilities);
|
||||
return (this);
|
||||
}
|
||||
|
||||
@ -299,11 +313,10 @@ public class QBackendMetaData
|
||||
*******************************************************************************/
|
||||
public QBackendMetaData withoutCapabilities(Capability... disabledCapabilities)
|
||||
{
|
||||
if(this.disabledCapabilities == null)
|
||||
for(Capability disabledCapability : disabledCapabilities)
|
||||
{
|
||||
this.disabledCapabilities = new HashSet<>();
|
||||
withoutCapability(disabledCapability);
|
||||
}
|
||||
this.disabledCapabilities.addAll(Arrays.stream(disabledCapabilities).toList());
|
||||
return (this);
|
||||
}
|
||||
|
||||
@ -315,7 +328,10 @@ public class QBackendMetaData
|
||||
*******************************************************************************/
|
||||
public QBackendMetaData withoutCapabilities(Set<Capability> disabledCapabilities)
|
||||
{
|
||||
this.disabledCapabilities = disabledCapabilities;
|
||||
for(Capability disabledCapability : disabledCapabilities)
|
||||
{
|
||||
withCapability(disabledCapability);
|
||||
}
|
||||
return (this);
|
||||
}
|
||||
|
||||
@ -332,6 +348,7 @@ public class QBackendMetaData
|
||||
this.disabledCapabilities = new HashSet<>();
|
||||
}
|
||||
this.disabledCapabilities.add(capability);
|
||||
this.enabledCapabilities.remove(capability);
|
||||
return (this);
|
||||
}
|
||||
|
||||
|
@ -33,9 +33,10 @@ public enum Capability
|
||||
TABLE_COUNT,
|
||||
TABLE_INSERT,
|
||||
TABLE_UPDATE,
|
||||
TABLE_DELETE
|
||||
TABLE_DELETE,
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
// keep these values in sync with Capability.ts in qqq-frontend-core //
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
|
||||
QUERY_STATS
|
||||
}
|
||||
|
@ -862,6 +862,10 @@ public class QTableMetaData implements QAppChildMetaData, Serializable, MetaData
|
||||
public void setEnabledCapabilities(Set<Capability> enabledCapabilities)
|
||||
{
|
||||
this.enabledCapabilities = enabledCapabilities;
|
||||
if(this.disabledCapabilities != null)
|
||||
{
|
||||
this.disabledCapabilities.removeAll(enabledCapabilities);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -872,7 +876,7 @@ public class QTableMetaData implements QAppChildMetaData, Serializable, MetaData
|
||||
*******************************************************************************/
|
||||
public QTableMetaData withEnabledCapabilities(Set<Capability> enabledCapabilities)
|
||||
{
|
||||
this.enabledCapabilities = enabledCapabilities;
|
||||
setEnabledCapabilities(enabledCapabilities);
|
||||
return (this);
|
||||
}
|
||||
|
||||
@ -884,7 +888,10 @@ public class QTableMetaData implements QAppChildMetaData, Serializable, MetaData
|
||||
*******************************************************************************/
|
||||
public QTableMetaData withCapabilities(Set<Capability> enabledCapabilities)
|
||||
{
|
||||
this.enabledCapabilities = enabledCapabilities;
|
||||
for(Capability enabledCapability : enabledCapabilities)
|
||||
{
|
||||
withCapability(enabledCapability);
|
||||
}
|
||||
return (this);
|
||||
}
|
||||
|
||||
@ -901,6 +908,7 @@ public class QTableMetaData implements QAppChildMetaData, Serializable, MetaData
|
||||
this.enabledCapabilities = new HashSet<>();
|
||||
}
|
||||
this.enabledCapabilities.add(capability);
|
||||
this.disabledCapabilities.remove(capability);
|
||||
return (this);
|
||||
}
|
||||
|
||||
@ -912,11 +920,10 @@ public class QTableMetaData implements QAppChildMetaData, Serializable, MetaData
|
||||
*******************************************************************************/
|
||||
public QTableMetaData withCapabilities(Capability... enabledCapabilities)
|
||||
{
|
||||
if(this.enabledCapabilities == null)
|
||||
for(Capability enabledCapability : enabledCapabilities)
|
||||
{
|
||||
this.enabledCapabilities = new HashSet<>();
|
||||
withCapability(enabledCapability);
|
||||
}
|
||||
this.enabledCapabilities.addAll(Arrays.stream(enabledCapabilities).toList());
|
||||
return (this);
|
||||
}
|
||||
|
||||
@ -940,6 +947,10 @@ public class QTableMetaData implements QAppChildMetaData, Serializable, MetaData
|
||||
public void setDisabledCapabilities(Set<Capability> disabledCapabilities)
|
||||
{
|
||||
this.disabledCapabilities = disabledCapabilities;
|
||||
if(this.enabledCapabilities != null)
|
||||
{
|
||||
this.enabledCapabilities.removeAll(disabledCapabilities);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -950,7 +961,7 @@ public class QTableMetaData implements QAppChildMetaData, Serializable, MetaData
|
||||
*******************************************************************************/
|
||||
public QTableMetaData withDisabledCapabilities(Set<Capability> disabledCapabilities)
|
||||
{
|
||||
this.disabledCapabilities = disabledCapabilities;
|
||||
setDisabledCapabilities(disabledCapabilities);
|
||||
return (this);
|
||||
}
|
||||
|
||||
@ -962,11 +973,10 @@ public class QTableMetaData implements QAppChildMetaData, Serializable, MetaData
|
||||
*******************************************************************************/
|
||||
public QTableMetaData withoutCapabilities(Capability... disabledCapabilities)
|
||||
{
|
||||
if(this.disabledCapabilities == null)
|
||||
for(Capability disabledCapability : disabledCapabilities)
|
||||
{
|
||||
this.disabledCapabilities = new HashSet<>();
|
||||
withoutCapability(disabledCapability);
|
||||
}
|
||||
this.disabledCapabilities.addAll(Arrays.stream(disabledCapabilities).toList());
|
||||
return (this);
|
||||
}
|
||||
|
||||
@ -978,7 +988,10 @@ public class QTableMetaData implements QAppChildMetaData, Serializable, MetaData
|
||||
*******************************************************************************/
|
||||
public QTableMetaData withoutCapabilities(Set<Capability> disabledCapabilities)
|
||||
{
|
||||
this.disabledCapabilities = disabledCapabilities;
|
||||
for(Capability disabledCapability : disabledCapabilities)
|
||||
{
|
||||
withCapability(disabledCapability);
|
||||
}
|
||||
return (this);
|
||||
}
|
||||
|
||||
@ -995,6 +1008,7 @@ public class QTableMetaData implements QAppChildMetaData, Serializable, MetaData
|
||||
this.disabledCapabilities = new HashSet<>();
|
||||
}
|
||||
this.disabledCapabilities.add(capability);
|
||||
this.enabledCapabilities.remove(capability);
|
||||
return (this);
|
||||
}
|
||||
|
||||
|
@ -69,6 +69,16 @@ class QTableMetaDataTest extends BaseTest
|
||||
|
||||
// table:false & backend:false = false
|
||||
assertFalse(new QTableMetaData().withoutCapability(capability).isCapabilityEnabled(new QBackendMetaData().withoutCapability(capability), capability));
|
||||
|
||||
// backend false, but then true = true
|
||||
assertTrue(new QTableMetaData().isCapabilityEnabled(new QBackendMetaData().withoutCapability(capability).withCapability(capability), capability));
|
||||
|
||||
// backend true, but then false = false
|
||||
assertFalse(new QTableMetaData().isCapabilityEnabled(new QBackendMetaData().withCapability(capability).withoutCapability(capability), capability));
|
||||
|
||||
// table true, but then false = true
|
||||
assertFalse(new QTableMetaData().withCapability(capability).withoutCapability(capability).isCapabilityEnabled(new QBackendMetaData(), capability));
|
||||
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user