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"),
DETAILSTATUS("status"),
LASTSTATUSCODE("lastActionStatusCode"),
CREATEDAT("createdAt"),
CREATEDBY("createdBy"),
LASTMODIFIEDAT("lastModifiedAt"),
LASTMODIFIEDBY("lastModifiedBy"),
WEIGHT("weight"),
TARGET("target",
TargetFields.ID.getJpaEntityFieldName(), TargetFields.NAME.getJpaEntityFieldName(),

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -21,7 +21,11 @@ public enum TargetTagFields implements RsqlQueryField {
ID(TagFields.ID.getJpaEntityFieldName()),
NAME(TagFields.NAME.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;

View File

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

View File

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