Add capability: QUERY_STATS; rework capabilities to be smarter w/ enable, then disable

This commit is contained in:
2023-06-16 08:37:01 -05:00
parent 9fe5067374
commit c07c007bc2
4 changed files with 64 additions and 22 deletions

View File

@ -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);
}

View File

@ -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
}

View File

@ -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);
}

View File

@ -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));
}
}