From e6ab09c3c28bf5607c62a7758205c2664c50b334 Mon Sep 17 00:00:00 2001 From: Maxim Date: Mon, 29 Apr 2024 11:09:46 +0200 Subject: [PATCH] feat: extend publications response body with resourceTypes (#318)(#315) --- .../epam/aidial/core/data/Publication.java | 20 +++++++++++ .../core/service/PublicationService.java | 1 + .../epam/aidial/core/PublicationApiTest.java | 36 +++++++++++++------ 3 files changed, 46 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/epam/aidial/core/data/Publication.java b/src/main/java/com/epam/aidial/core/data/Publication.java index 253251b83..21ad957b0 100644 --- a/src/main/java/com/epam/aidial/core/data/Publication.java +++ b/src/main/java/com/epam/aidial/core/data/Publication.java @@ -4,7 +4,9 @@ import lombok.Data; import lombok.experimental.Accessors; +import java.util.HashSet; import java.util.List; +import java.util.Set; @Data @Accessors(chain = true) @@ -21,6 +23,7 @@ public class Publication { Status status; Long createdAt; List resources; + Set resourceTypes; List rules; public enum Status { @@ -42,4 +45,21 @@ public static class Resource { */ String reviewUrl; } + + public Set getResourceTypes() { + if (resourceTypes != null) { + return resourceTypes; + } + if (resources == null) { + return Set.of(); + } + Set resourceTypes = new HashSet<>(); + for (Resource resource : resources) { + String sourceUrl = resource.getSourceUrl(); + String resourceType = sourceUrl.substring(0, sourceUrl.indexOf('/')); + resourceTypes.add(ResourceType.of(resourceType)); + } + + return resourceTypes; + } } \ No newline at end of file diff --git a/src/main/java/com/epam/aidial/core/service/PublicationService.java b/src/main/java/com/epam/aidial/core/service/PublicationService.java index f5815b33a..5210c3a52 100644 --- a/src/main/java/com/epam/aidial/core/service/PublicationService.java +++ b/src/main/java/com/epam/aidial/core/service/PublicationService.java @@ -666,6 +666,7 @@ private static Publication newMetadata(Publication publication) { .setUrl(publication.getUrl()) .setTargetUrl(publication.getTargetUrl()) .setStatus(publication.getStatus()) + .setResourceTypes(publication.getResourceTypes()) .setCreatedAt(publication.getCreatedAt()); } diff --git a/src/test/java/com/epam/aidial/core/PublicationApiTest.java b/src/test/java/com/epam/aidial/core/PublicationApiTest.java index def24ac4d..dc79447ae 100644 --- a/src/test/java/com/epam/aidial/core/PublicationApiTest.java +++ b/src/test/java/com/epam/aidial/core/PublicationApiTest.java @@ -42,6 +42,7 @@ class PublicationApiTest extends ResourceBaseTest { "targetUrl" : "conversations/public/folder/conversation", "reviewUrl" : "conversations/2CZ9i2bcBACFts8JbBu3MdTHfU5imDZBmDVomBuDCkbhEstv1KXNzCiw693js8BLmo/conversation" } ], + "resourceTypes" : [ "CONVERSATION" ], "rules" : [ { "function" : "EQUAL", "source" : "roles", @@ -81,7 +82,8 @@ void testPublicationCreation() { "url" : "publications/3CcedGxCx23EwiVbVmscVktScRyf46KypuBQ65miviST/0123", "targetUrl" : "public/folder/", "status" : "PENDING", - "createdAt" : 0 + "createdAt" : 0, + "resourceTypes" : [ "CONVERSATION" ] } ] } """); @@ -153,6 +155,7 @@ void testDeleteApprovedPublicationWorkflow() { "targetUrl" : "conversations/public/folder/conversation", "reviewUrl" : "conversations/2CZ9i2bcBACFts8JbBu3MdTHfU5imDZBmDVomBuDCkbhEstv1KXNzCiw693js8BLmo/conversation" } ], + "resourceTypes" : [ "CONVERSATION" ], "rules" : [ { "function" : "EQUAL", "source" : "roles", @@ -174,7 +177,8 @@ void testDeleteApprovedPublicationWorkflow() { "url":"publications/3CcedGxCx23EwiVbVmscVktScRyf46KypuBQ65miviST/0123", "targetUrl":"public/folder/", "status":"APPROVED", - "createdAt":0 + "createdAt":0, + "resourceTypes" : [ "CONVERSATION" ] }] } """); @@ -195,7 +199,8 @@ void testDeleteApprovedPublicationWorkflow() { "url":"publications/3CcedGxCx23EwiVbVmscVktScRyf46KypuBQ65miviST/0123", "targetUrl":"public/folder/", "status":"REQUESTED_FOR_DELETION", - "createdAt":0 + "createdAt":0, + "resourceTypes" : [ "CONVERSATION" ] }] } """); @@ -220,7 +225,8 @@ void testDeleteApprovedPublicationWorkflow() { "url":"publications/3CcedGxCx23EwiVbVmscVktScRyf46KypuBQ65miviST/0123", "targetUrl":"public/folder/", "status":"REQUESTED_FOR_DELETION", - "createdAt":0 + "createdAt":0, + "resourceTypes" : [ "CONVERSATION" ] }] } """); @@ -270,12 +276,12 @@ void testRejectUserDeletionRequestWorkflow() { "targetUrl" : "conversations/public/folder/conversation", "reviewUrl" : "conversations/2CZ9i2bcBACFts8JbBu3MdTHfU5imDZBmDVomBuDCkbhEstv1KXNzCiw693js8BLmo/conversation" } ], + "resourceTypes" : [ "CONVERSATION" ], "rules" : [ { "function" : "EQUAL", "source" : "roles", "targets" : [ "user" ] } ] - } """); @@ -291,7 +297,8 @@ void testRejectUserDeletionRequestWorkflow() { "url":"publications/3CcedGxCx23EwiVbVmscVktScRyf46KypuBQ65miviST/0123", "targetUrl":"public/folder/", "status":"APPROVED", - "createdAt":0 + "createdAt":0, + "resourceTypes" : [ "CONVERSATION" ] }] } """); @@ -312,7 +319,8 @@ void testRejectUserDeletionRequestWorkflow() { "url":"publications/3CcedGxCx23EwiVbVmscVktScRyf46KypuBQ65miviST/0123", "targetUrl":"public/folder/", "status":"REQUESTED_FOR_DELETION", - "createdAt":0 + "createdAt":0, + "resourceTypes" : [ "CONVERSATION" ] }] } """); @@ -337,7 +345,8 @@ void testRejectUserDeletionRequestWorkflow() { "url":"publications/3CcedGxCx23EwiVbVmscVktScRyf46KypuBQ65miviST/0123", "targetUrl":"public/folder/", "status":"REQUESTED_FOR_DELETION", - "createdAt":0 + "createdAt":0, + "resourceTypes" : [ "CONVERSATION" ] }] } """); @@ -368,7 +377,8 @@ void testRejectUserDeletionRequestWorkflow() { "url":"publications/3CcedGxCx23EwiVbVmscVktScRyf46KypuBQ65miviST/0123", "targetUrl":"public/folder/", "status":"APPROVED", - "createdAt":0 + "createdAt":0, + "resourceTypes" : [ "CONVERSATION" ] }] } """); @@ -411,6 +421,7 @@ void testPublicationApprove() { "targetUrl" : "conversations/public/folder/conversation", "reviewUrl" : "conversations/2CZ9i2bcBACFts8JbBu3MdTHfU5imDZBmDVomBuDCkbhEstv1KXNzCiw693js8BLmo/conversation" } ], + "resourceTypes" : [ "CONVERSATION" ], "rules" : [ { "function" : "EQUAL", "source" : "roles", @@ -480,6 +491,7 @@ void testPublicationReject() { "targetUrl" : "conversations/public/folder/conversation", "reviewUrl" : "conversations/2CZ9i2bcBACFts8JbBu3MdTHfU5imDZBmDVomBuDCkbhEstv1KXNzCiw693js8BLmo/conversation" } ], + "resourceTypes" : [ "CONVERSATION" ], "rules" : [ { "function" : "EQUAL", "source" : "roles", @@ -750,7 +762,8 @@ void testPublicationList() { "url" : "publications/3CcedGxCx23EwiVbVmscVktScRyf46KypuBQ65miviST/0123", "targetUrl" : "public/folder/", "status" : "PENDING", - "createdAt" : 0 + "createdAt" : 0, + "resourceTypes" : [ "CONVERSATION" ] } ] } """); @@ -880,7 +893,8 @@ void testPublishedResourceList() { "url" : "publications/3CcedGxCx23EwiVbVmscVktScRyf46KypuBQ65miviST/0123", "targetUrl" : "public/folder/", "status" : "PENDING", - "createdAt" : 0 + "createdAt" : 0, + "resourceTypes" : [ "CONVERSATION" ] } ] } """);