Allow to filter actions by createdAt and lastModifiedAt timestamp (#2546)

* Allow to filter actions by createdAt and lastModifiedAt timestamp

Signed-off-by: strailov <Stanislav.Trailov@bosch.io>

* add filtering options for created at/by & lastmodified at/by for all entities

Signed-off-by: strailov <Stanislav.Trailov@bosch.io>

* Unify ActionStatusFields like other field filters

Signed-off-by: strailov <Stanislav.Trailov@bosch.io>

* fix tests accordingly

Signed-off-by: strailov <Stanislav.Trailov@bosch.io>

* only deprecate reportedAt filter option

Signed-off-by: strailov <Stanislav.Trailov@bosch.io>

---------

Signed-off-by: strailov <Stanislav.Trailov@bosch.io>
This commit is contained in:
Stanislav Trailov
2025-08-12 08:18:24 +03:00
committed by GitHub
parent 124fef189e
commit 5b299e0a62
15 changed files with 61 additions and 10 deletions

View File

@@ -23,6 +23,10 @@ public enum ActionFields implements RsqlQueryField, FieldValueConverter<ActionFi
STATUS("active"), STATUS("active"),
DETAILSTATUS("status"), DETAILSTATUS("status"),
LASTSTATUSCODE("lastActionStatusCode"), LASTSTATUSCODE("lastActionStatusCode"),
CREATEDAT("createdAt"),
CREATEDBY("createdBy"),
LASTMODIFIEDAT("lastModifiedAt"),
LASTMODIFIEDBY("lastModifiedBy"),
WEIGHT("weight"), WEIGHT("weight"),
TARGET("target", TARGET("target",
TargetFields.ID.getJpaEntityFieldName(), TargetFields.NAME.getJpaEntityFieldName(), TargetFields.ID.getJpaEntityFieldName(), TargetFields.NAME.getJpaEntityFieldName(),

View File

@@ -18,7 +18,10 @@ import lombok.Getter;
public enum ActionStatusFields implements RsqlQueryField { public enum ActionStatusFields implements RsqlQueryField {
ID("id"), ID("id"),
REPORTEDAT("createdAt"); @Deprecated
REPORTEDAT("createdAt"),
CREATEDAT("createdAt"),
CREATEDBY("createdBy");
private final String jpaEntityFieldName; private final String jpaEntityFieldName;

View File

@@ -25,7 +25,9 @@ public enum DistributionSetFields implements RsqlQueryField {
NAME("name"), NAME("name"),
DESCRIPTION("description"), DESCRIPTION("description"),
CREATEDAT("createdAt"), CREATEDAT("createdAt"),
CREATEDBY("createdBy"),
LASTMODIFIEDAT("lastModifiedAt"), LASTMODIFIEDAT("lastModifiedAt"),
LASTMODIFIEDBY("lastModifiedBy"),
VERSION("version"), VERSION("version"),
COMPLETE("complete"), COMPLETE("complete"),
MODULE("modules", SoftwareModuleFields.ID.getJpaEntityFieldName(), SoftwareModuleFields.NAME.getJpaEntityFieldName()), MODULE("modules", SoftwareModuleFields.ID.getJpaEntityFieldName(), SoftwareModuleFields.NAME.getJpaEntityFieldName()),

View File

@@ -26,6 +26,10 @@ public enum DistributionSetTagFields implements RsqlQueryField {
NAME(TagFields.NAME.getJpaEntityFieldName()), NAME(TagFields.NAME.getJpaEntityFieldName()),
DESCRIPTION(TagFields.DESCRIPTION.getJpaEntityFieldName()), DESCRIPTION(TagFields.DESCRIPTION.getJpaEntityFieldName()),
COLOUR(TagFields.COLOUR.getJpaEntityFieldName()), COLOUR(TagFields.COLOUR.getJpaEntityFieldName()),
CREATEDAT("createdAt"),
CREATEDBY("createdBy"),
LASTMODIFIEDAT("lastModifiedAt"),
LASTMODIFIEDBY("lastModifiedBy"),
DISTRIBUTIONSET( DISTRIBUTIONSET(
"assignedToDistributionSet", "assignedToDistributionSet",
DistributionSetFields.ID.getJpaEntityFieldName(), DistributionSetFields.NAME.getJpaEntityFieldName()); DistributionSetFields.ID.getJpaEntityFieldName(), DistributionSetFields.NAME.getJpaEntityFieldName());

View File

@@ -21,7 +21,11 @@ public enum DistributionSetTypeFields implements RsqlQueryField {
ID("id"), ID("id"),
KEY("key"), KEY("key"),
NAME("name"), NAME("name"),
DESCRIPTION("description"); DESCRIPTION("description"),
CREATEDAT("createdAt"),
CREATEDBY("createdBy"),
LASTMODIFIEDAT("lastModifiedAt"),
LASTMODIFIEDBY("lastModifiedBy");
private final String jpaEntityFieldName; private final String jpaEntityFieldName;

View File

@@ -23,6 +23,10 @@ public enum RolloutFields implements RsqlQueryField {
NAME("name"), NAME("name"),
DESCRIPTION("description"), DESCRIPTION("description"),
STATUS("status"), STATUS("status"),
CREATEDAT("createdAt"),
CREATEDBY("createdBy"),
LASTMODIFIEDAT("lastModifiedAt"),
LASTMODIFIEDBY("lastModifiedBy"),
DISTRIBUTIONSET( DISTRIBUTIONSET(
"distributionSet", "distributionSet",
DistributionSetFields.ID.getJpaEntityFieldName(), DistributionSetFields.ID.getJpaEntityFieldName(),

View File

@@ -19,7 +19,11 @@ public enum RolloutGroupFields implements RsqlQueryField {
ID("id"), ID("id"),
NAME("name"), NAME("name"),
DESCRIPTION("description"); DESCRIPTION("description"),
CREATEDAT("createdAt"),
CREATEDBY("createdBy"),
LASTMODIFIEDAT("lastModifiedAt"),
LASTMODIFIEDBY("lastModifiedBy");
private final String jpaEntityFieldName; private final String jpaEntityFieldName;

View File

@@ -24,7 +24,11 @@ public enum SoftwareModuleFields implements RsqlQueryField {
NAME("name"), NAME("name"),
DESCRIPTION("description"), DESCRIPTION("description"),
VERSION("version"), VERSION("version"),
METADATA("metadata"); METADATA("metadata"),
CREATEDAT("createdAt"),
CREATEDBY("createdBy"),
LASTMODIFIEDAT("lastModifiedAt"),
LASTMODIFIEDBY("lastModifiedBy");
private final String jpaEntityFieldName; private final String jpaEntityFieldName;
private final List<String> subEntityAttributes; private final List<String> subEntityAttributes;

View File

@@ -21,7 +21,11 @@ public enum SoftwareModuleTypeFields implements RsqlQueryField {
KEY("key"), KEY("key"),
NAME("name"), NAME("name"),
DESCRIPTION("description"), DESCRIPTION("description"),
MAXASSIGNMENTS("maxAssignments"); MAXASSIGNMENTS("maxAssignments"),
CREATEDAT("createdAt"),
CREATEDBY("createdBy"),
LASTMODIFIEDAT("lastModifiedAt"),
LASTMODIFIEDBY("lastModifiedBy");
private final String jpaEntityFieldName; private final String jpaEntityFieldName;

View File

@@ -20,7 +20,11 @@ public enum TagFields implements RsqlQueryField {
ID("id"), ID("id"),
NAME("name"), NAME("name"),
DESCRIPTION("description"), DESCRIPTION("description"),
COLOUR("colour"); COLOUR("colour"),
CREATEDAT("createdAt"),
CREATEDBY("createdBy"),
LASTMODIFIEDAT("lastModifiedAt"),
LASTMODIFIEDBY("lastModifiedBy");
private final String jpaEntityFieldName; private final String jpaEntityFieldName;

View File

@@ -24,7 +24,9 @@ public enum TargetFields implements RsqlQueryField {
NAME("name"), NAME("name"),
DESCRIPTION("description"), DESCRIPTION("description"),
CREATEDAT("createdAt"), CREATEDAT("createdAt"),
CREATEDBY("createdBy"),
LASTMODIFIEDAT("lastModifiedAt"), LASTMODIFIEDAT("lastModifiedAt"),
LASTMODIFIEDBY("lastModifiedBy"),
CONTROLLERID("controllerId"), CONTROLLERID("controllerId"),
UPDATESTATUS("updateStatus"), UPDATESTATUS("updateStatus"),
IPADDRESS("address"), IPADDRESS("address"),

View File

@@ -22,6 +22,10 @@ public enum TargetFilterQueryFields implements RsqlQueryField {
ID("id"), ID("id"),
NAME("name"), NAME("name"),
CREATEDAT("createdAt"),
CREATEDBY("createdBy"),
LASTMODIFIEDAT("lastModifiedAt"),
LASTMODIFIEDBY("lastModifiedBy"),
AUTOASSIGNDISTRIBUTIONSET("autoAssignDistributionSet", "name", "version"); AUTOASSIGNDISTRIBUTIONSET("autoAssignDistributionSet", "name", "version");
private final String jpaEntityFieldName; private final String jpaEntityFieldName;

View File

@@ -21,7 +21,11 @@ public enum TargetTagFields implements RsqlQueryField {
ID(TagFields.ID.getJpaEntityFieldName()), ID(TagFields.ID.getJpaEntityFieldName()),
NAME(TagFields.NAME.getJpaEntityFieldName()), NAME(TagFields.NAME.getJpaEntityFieldName()),
DESCRIPTION(TagFields.DESCRIPTION.getJpaEntityFieldName()), DESCRIPTION(TagFields.DESCRIPTION.getJpaEntityFieldName()),
COLOUR(TagFields.COLOUR.getJpaEntityFieldName()); COLOUR(TagFields.COLOUR.getJpaEntityFieldName()),
CREATEDAT("createdAt"),
CREATEDBY("createdBy"),
LASTMODIFIEDAT("lastModifiedAt"),
LASTMODIFIEDBY("lastModifiedBy");
private final String jpaEntityFieldName; private final String jpaEntityFieldName;

View File

@@ -20,7 +20,11 @@ public enum TargetTypeFields implements RsqlQueryField {
ID("id"), ID("id"),
KEY("key"), KEY("key"),
NAME("name"), NAME("name"),
DESCRIPTION("description"); DESCRIPTION("description"),
CREATEDAT("createdAt"),
CREATEDBY("createdBy"),
LASTMODIFIEDAT("lastModifiedAt"),
LASTMODIFIEDBY("lastModifiedBy");
private final String jpaEntityFieldName; private final String jpaEntityFieldName;

View File

@@ -1467,7 +1467,7 @@ class MgmtTargetResourceTest extends AbstractManagementApiIntegrationTest {
mvc.perform(get(MgmtRestConstants.TARGET_V1_REQUEST_MAPPING + "/" + knownTargetId + "/" mvc.perform(get(MgmtRestConstants.TARGET_V1_REQUEST_MAPPING + "/" + knownTargetId + "/"
+ MgmtRestConstants.TARGET_V1_ACTIONS + "/" + action.getId() + "/" + MgmtRestConstants.TARGET_V1_ACTIONS + "/" + action.getId() + "/"
+ MgmtRestConstants.TARGET_V1_ACTION_STATUS).param(MgmtRestConstants.REQUEST_PARAMETER_SORTING, + MgmtRestConstants.TARGET_V1_ACTION_STATUS).param(MgmtRestConstants.REQUEST_PARAMETER_SORTING,
"REPORTEDAT:DESC")) "CREATEDAT:DESC"))
.andDo(MockMvcResultPrinter.print()) .andDo(MockMvcResultPrinter.print())
.andExpect(status().isOk()) .andExpect(status().isOk())
.andExpect(jsonPath("content.[0].id", equalTo(actionStatus.get(1).getId().intValue()))) .andExpect(jsonPath("content.[0].id", equalTo(actionStatus.get(1).getId().intValue())))
@@ -1486,7 +1486,7 @@ class MgmtTargetResourceTest extends AbstractManagementApiIntegrationTest {
mvc.perform(get(MgmtRestConstants.TARGET_V1_REQUEST_MAPPING + "/" + knownTargetId + "/" mvc.perform(get(MgmtRestConstants.TARGET_V1_REQUEST_MAPPING + "/" + knownTargetId + "/"
+ MgmtRestConstants.TARGET_V1_ACTIONS + "/" + action.getId() + "/" + MgmtRestConstants.TARGET_V1_ACTIONS + "/" + action.getId() + "/"
+ MgmtRestConstants.TARGET_V1_ACTION_STATUS).param(MgmtRestConstants.REQUEST_PARAMETER_SORTING, + MgmtRestConstants.TARGET_V1_ACTION_STATUS).param(MgmtRestConstants.REQUEST_PARAMETER_SORTING,
"REPORTEDAT:ASC")) "CREATEDAT:ASC"))
.andDo(MockMvcResultPrinter.print()) .andDo(MockMvcResultPrinter.print())
.andExpect(status().isOk()) .andExpect(status().isOk())
.andExpect(jsonPath("content.[1].id", equalTo(actionStatus.get(1).getId().intValue()))) .andExpect(jsonPath("content.[1].id", equalTo(actionStatus.get(1).getId().intValue())))