From 5b299e0a62031b346eeb352981602964d94d8807 Mon Sep 17 00:00:00 2001 From: Stanislav Trailov Date: Tue, 12 Aug 2025 08:18:24 +0300 Subject: [PATCH] Allow to filter actions by createdAt and lastModifiedAt timestamp (#2546) * Allow to filter actions by createdAt and lastModifiedAt timestamp Signed-off-by: strailov * add filtering options for created at/by & lastmodified at/by for all entities Signed-off-by: strailov * Unify ActionStatusFields like other field filters Signed-off-by: strailov * fix tests accordingly Signed-off-by: strailov * only deprecate reportedAt filter option Signed-off-by: strailov --------- Signed-off-by: strailov --- .../java/org/eclipse/hawkbit/repository/ActionFields.java | 4 ++++ .../org/eclipse/hawkbit/repository/ActionStatusFields.java | 5 ++++- .../eclipse/hawkbit/repository/DistributionSetFields.java | 2 ++ .../hawkbit/repository/DistributionSetTagFields.java | 4 ++++ .../hawkbit/repository/DistributionSetTypeFields.java | 6 +++++- .../java/org/eclipse/hawkbit/repository/RolloutFields.java | 4 ++++ .../org/eclipse/hawkbit/repository/RolloutGroupFields.java | 6 +++++- .../eclipse/hawkbit/repository/SoftwareModuleFields.java | 6 +++++- .../hawkbit/repository/SoftwareModuleTypeFields.java | 6 +++++- .../main/java/org/eclipse/hawkbit/repository/TagFields.java | 6 +++++- .../java/org/eclipse/hawkbit/repository/TargetFields.java | 2 ++ .../eclipse/hawkbit/repository/TargetFilterQueryFields.java | 4 ++++ .../org/eclipse/hawkbit/repository/TargetTagFields.java | 6 +++++- .../org/eclipse/hawkbit/repository/TargetTypeFields.java | 6 +++++- .../hawkbit/mgmt/rest/resource/MgmtTargetResourceTest.java | 4 ++-- 15 files changed, 61 insertions(+), 10 deletions(-) diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/repository/ActionFields.java b/hawkbit-core/src/main/java/org/eclipse/hawkbit/repository/ActionFields.java index a5e43b506..9adc630d9 100644 --- a/hawkbit-core/src/main/java/org/eclipse/hawkbit/repository/ActionFields.java +++ b/hawkbit-core/src/main/java/org/eclipse/hawkbit/repository/ActionFields.java @@ -23,6 +23,10 @@ public enum ActionFields implements RsqlQueryField, FieldValueConverter subEntityAttributes; diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/repository/SoftwareModuleTypeFields.java b/hawkbit-core/src/main/java/org/eclipse/hawkbit/repository/SoftwareModuleTypeFields.java index 29852bd1d..650300633 100644 --- a/hawkbit-core/src/main/java/org/eclipse/hawkbit/repository/SoftwareModuleTypeFields.java +++ b/hawkbit-core/src/main/java/org/eclipse/hawkbit/repository/SoftwareModuleTypeFields.java @@ -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; diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/repository/TagFields.java b/hawkbit-core/src/main/java/org/eclipse/hawkbit/repository/TagFields.java index ac39b63e3..a7bd48255 100644 --- a/hawkbit-core/src/main/java/org/eclipse/hawkbit/repository/TagFields.java +++ b/hawkbit-core/src/main/java/org/eclipse/hawkbit/repository/TagFields.java @@ -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; diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/repository/TargetFields.java b/hawkbit-core/src/main/java/org/eclipse/hawkbit/repository/TargetFields.java index d3ae97c59..4c1b39903 100644 --- a/hawkbit-core/src/main/java/org/eclipse/hawkbit/repository/TargetFields.java +++ b/hawkbit-core/src/main/java/org/eclipse/hawkbit/repository/TargetFields.java @@ -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"), diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/repository/TargetFilterQueryFields.java b/hawkbit-core/src/main/java/org/eclipse/hawkbit/repository/TargetFilterQueryFields.java index acdc1b3aa..7a061e40a 100644 --- a/hawkbit-core/src/main/java/org/eclipse/hawkbit/repository/TargetFilterQueryFields.java +++ b/hawkbit-core/src/main/java/org/eclipse/hawkbit/repository/TargetFilterQueryFields.java @@ -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; diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/repository/TargetTagFields.java b/hawkbit-core/src/main/java/org/eclipse/hawkbit/repository/TargetTagFields.java index b2ac7b1c9..c3fd56414 100644 --- a/hawkbit-core/src/main/java/org/eclipse/hawkbit/repository/TargetTagFields.java +++ b/hawkbit-core/src/main/java/org/eclipse/hawkbit/repository/TargetTagFields.java @@ -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; diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/repository/TargetTypeFields.java b/hawkbit-core/src/main/java/org/eclipse/hawkbit/repository/TargetTypeFields.java index 7d8a29c74..25357b194 100644 --- a/hawkbit-core/src/main/java/org/eclipse/hawkbit/repository/TargetTypeFields.java +++ b/hawkbit-core/src/main/java/org/eclipse/hawkbit/repository/TargetTypeFields.java @@ -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; diff --git a/hawkbit-mgmt/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtTargetResourceTest.java b/hawkbit-mgmt/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtTargetResourceTest.java index ae119e054..75c84fb71 100644 --- a/hawkbit-mgmt/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtTargetResourceTest.java +++ b/hawkbit-mgmt/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtTargetResourceTest.java @@ -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())))