Extend Query Langage Support (#2696)

* add option for parser replacement - so, one could replace the query language and don't use RSQL
* add easy way to modify query root Node 
* add easy Node modification utilities
* code refactored and naming more 'QL' than 'RSQL' oriented

Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
This commit is contained in:
Avgustin Marinov
2025-09-26 14:19:25 +03:00
committed by GitHub
parent d0fe120a3b
commit b181b66ee5
45 changed files with 308 additions and 211 deletions

View File

@@ -17,7 +17,7 @@ import lombok.Getter;
* Sort and search fields for actions.
*/
@Getter
public enum ActionFields implements RsqlQueryField, FieldValueConverter<ActionFields> {
public enum ActionFields implements QueryField, FieldValueConverter<ActionFields> {
ID("id"),
STATUS("active"),

View File

@@ -15,7 +15,7 @@ import lombok.Getter;
* Sort and search fields for action status.
*/
@Getter
public enum ActionStatusFields implements RsqlQueryField {
public enum ActionStatusFields implements QueryField {
ID("id"),
@Deprecated

View File

@@ -18,7 +18,7 @@ import lombok.Getter;
* REST API e.g. for sorting etc.
*/
@Getter
public enum DistributionSetFields implements RsqlQueryField {
public enum DistributionSetFields implements QueryField {
ID("id"),
TYPE("type",
@@ -48,7 +48,7 @@ public enum DistributionSetFields implements RsqlQueryField {
@Override
public String getDefaultSubEntityAttribute() {
return this == TYPE ? DistributionSetTypeFields.KEY.getJpaEntityFieldName() : RsqlQueryField.super.getDefaultSubEntityAttribute();
return this == TYPE ? DistributionSetTypeFields.KEY.getJpaEntityFieldName() : QueryField.super.getDefaultSubEntityAttribute();
}
@Override

View File

@@ -20,7 +20,7 @@ import lombok.Getter;
* filtering over distribution set fields also.
*/
@Getter
public enum DistributionSetTagFields implements RsqlQueryField {
public enum DistributionSetTagFields implements QueryField {
ID(TagFields.ID.getJpaEntityFieldName()),
NAME(TagFields.NAME.getJpaEntityFieldName()),

View File

@@ -16,7 +16,7 @@ import lombok.Getter;
* the REST API e.g. for sorting etc.
*/
@Getter
public enum DistributionSetTypeFields implements RsqlQueryField {
public enum DistributionSetTypeFields implements QueryField {
ID("id"),
KEY("key"),

View File

@@ -16,9 +16,9 @@ import java.util.Map;
import jakarta.validation.constraints.NotNull;
/**
* An RSQL query field interface extended by all the fields that could be used in RSQL queries.
* A query field interface extended by all the fields that could be used in queries.
*/
public interface RsqlQueryField {
public interface QueryField {
/**
* Separator for the sub attributes

View File

@@ -17,7 +17,7 @@ import lombok.Getter;
* Describing the fields of the Rollout model which can be used in the REST API e.g. for sorting etc.
*/
@Getter
public enum RolloutFields implements RsqlQueryField {
public enum RolloutFields implements QueryField {
ID("id"),
NAME("name"),

View File

@@ -15,7 +15,7 @@ import lombok.Getter;
* Describing the fields of the RolloutGroup model which can be used in the REST API e.g. for sorting etc.
*/
@Getter
public enum RolloutGroupFields implements RsqlQueryField {
public enum RolloutGroupFields implements QueryField {
ID("id"),
NAME("name"),

View File

@@ -17,7 +17,7 @@ import lombok.Getter;
* Describing the fields of the SoftwareModule model which can be used in the REST API e.g. for sorting etc.
*/
@Getter
public enum SoftwareModuleFields implements RsqlQueryField {
public enum SoftwareModuleFields implements QueryField {
ID("id"),
TYPE("type",
@@ -44,7 +44,7 @@ public enum SoftwareModuleFields implements RsqlQueryField {
@Override
public String getDefaultSubEntityAttribute() {
return this == TYPE ? SoftwareModuleTypeFields.KEY.getJpaEntityFieldName() : RsqlQueryField.super.getDefaultSubEntityAttribute();
return this == TYPE ? SoftwareModuleTypeFields.KEY.getJpaEntityFieldName() : QueryField.super.getDefaultSubEntityAttribute();
}
@Override

View File

@@ -15,7 +15,7 @@ import lombok.Getter;
* Describing the fields of the SoftwareModuleType model which can be used in the REST API e.g. for sorting etc.
*/
@Getter
public enum SoftwareModuleTypeFields implements RsqlQueryField {
public enum SoftwareModuleTypeFields implements QueryField {
ID("id"),
KEY("key"),

View File

@@ -15,7 +15,7 @@ import lombok.Getter;
* Describing the fields of the Tag model which can be used in the REST API e.g. for sorting etc.
*/
@Getter
public enum TagFields implements RsqlQueryField {
public enum TagFields implements QueryField {
ID("id"),
NAME("name"),

View File

@@ -18,7 +18,7 @@ import lombok.Getter;
* e.g. for sorting etc.
*/
@Getter
public enum TargetFields implements RsqlQueryField {
public enum TargetFields implements QueryField {
ID("controllerId"),
NAME("name"),
@@ -62,7 +62,7 @@ public enum TargetFields implements RsqlQueryField {
@Override
public String getDefaultSubEntityAttribute() {
return this == TYPE ? TargetTypeFields.KEY.getJpaEntityFieldName() : RsqlQueryField.super.getDefaultSubEntityAttribute();
return this == TYPE ? TargetTypeFields.KEY.getJpaEntityFieldName() : QueryField.super.getDefaultSubEntityAttribute();
}
@Override

View File

@@ -18,7 +18,7 @@ import lombok.Getter;
* Describing the fields of the Target model which can be used in the REST API e.g. for sorting etc.
*/
@Getter
public enum TargetFilterQueryFields implements RsqlQueryField {
public enum TargetFilterQueryFields implements QueryField {
ID("id"),
NAME("name"),

View File

@@ -16,7 +16,7 @@ import lombok.Getter;
* Additionally, here were added fields for Target in order filtering over target fields also.
*/
@Getter
public enum TargetTagFields implements RsqlQueryField {
public enum TargetTagFields implements QueryField {
ID(TagFields.ID.getJpaEntityFieldName()),
NAME(TagFields.NAME.getJpaEntityFieldName()),

View File

@@ -15,7 +15,7 @@ import lombok.Getter;
* Describing the fields of the TargetType model which can be used in the REST API
*/
@Getter
public enum TargetTypeFields implements RsqlQueryField {
public enum TargetTypeFields implements QueryField {
ID("id"),
KEY("key"),