From b87147e381203035cbbd643db2fb5f219fe71ed3 Mon Sep 17 00:00:00 2001
From: Martin Weise <martin.weise@tuwien.ac.at>
Date: Thu, 24 Apr 2025 10:19:54 +0200
Subject: [PATCH] Updated the filter

Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at>
---
 .../at/tuwien/endpoints/DatabaseEndpoint.java  |  9 +++++++++
 dbrepo-ui/components/ResourceStatus.vue        | 18 +++++++++++++++++-
 dbrepo-ui/nuxt.config.ts                       |  4 ++--
 3 files changed, 28 insertions(+), 3 deletions(-)

diff --git a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/DatabaseEndpoint.java b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/DatabaseEndpoint.java
index 9eadffd0df..fb4ebf692a 100644
--- a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/DatabaseEndpoint.java
+++ b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/DatabaseEndpoint.java
@@ -5,6 +5,7 @@ import at.tuwien.api.error.ApiErrorDto;
 import at.tuwien.entities.container.Container;
 import at.tuwien.entities.database.Database;
 import at.tuwien.entities.database.DatabaseAccess;
+import at.tuwien.entities.identifier.IdentifierStatusType;
 import at.tuwien.entities.user.User;
 import at.tuwien.exception.*;
 import at.tuwien.mapper.MetadataMapper;
@@ -534,6 +535,10 @@ public class DatabaseEndpoint extends AbstractEndpoint {
                 log.trace("authenticated user {} is not owner: remove access list", principal.getName());
                 database.setAccesses(List.of());
             }
+            database.setIdentifiers(database.getIdentifiers()
+                    .stream()
+                    .filter(i -> i.getStatus().equals(IdentifierStatusType.DRAFT) && i.getOwnedBy().equals(getId(principal)) || i.getStatus().equals(IdentifierStatusType.PUBLISHED))
+                    .toList());
         } else {
             if (!database.getIsPublic() && !database.getIsSchemaPublic()) {
                 log.error("Failed to find database: not public and not authenticated");
@@ -551,6 +556,10 @@ public class DatabaseEndpoint extends AbstractEndpoint {
                             .filter(v -> !v.getIsPublic() && !v.getIsSchemaPublic())
                             .toList());
             database.setAccesses(List.of());
+            database.setIdentifiers(database.getIdentifiers()
+                    .stream()
+                    .filter(i -> i.getStatus().equals(IdentifierStatusType.PUBLISHED))
+                    .toList());
         }
         final DatabaseDto dto = metadataMapper.databaseToDatabaseDto(database);
         final HttpHeaders headers = new HttpHeaders();
diff --git a/dbrepo-ui/components/ResourceStatus.vue b/dbrepo-ui/components/ResourceStatus.vue
index 017908b3af..da792bfaac 100644
--- a/dbrepo-ui/components/ResourceStatus.vue
+++ b/dbrepo-ui/components/ResourceStatus.vue
@@ -16,6 +16,8 @@
 </template>
 
 <script>
+import {useCacheStore} from "~/stores/cache.js";
+
 export default {
   props: {
     resource: {
@@ -34,6 +36,11 @@ export default {
       }
     }
   },
+  data () {
+    return {
+      cacheStore: useCacheStore()
+    }
+  },
   computed: {
     mode () {
       if (!this.resource) {
@@ -54,8 +61,17 @@ export default {
       }
       return this.$t(`pages.database.status.${this.mode}`)
     },
+    cacheUser () {
+      return this.cacheStore.getUser
+    },
     hasIdentifier () {
-      return this.resource.identifiers?.length > 0
+      if (!this.resource.identifiers) {
+        return false
+      }
+      if (!this.cacheUser) {
+        return this.resource.identifiers.filter(i => i.status === 'published').length
+      }
+      return this.resource.identifiers.filter(i => i.status === 'published' || i.owner.id === this.cacheUser.uid)
     },
     color () {
       if (this.hasIdentifier) {
diff --git a/dbrepo-ui/nuxt.config.ts b/dbrepo-ui/nuxt.config.ts
index b3694d5b8b..bf094023cb 100644
--- a/dbrepo-ui/nuxt.config.ts
+++ b/dbrepo-ui/nuxt.config.ts
@@ -82,8 +82,8 @@ export default defineNuxtConfig({
         }
       },
       api: {
-        client: 'http://localhost',
-        server: 'http://gateway-service',
+        client: 'https://test.dbrepo.tuwien.ac.at',
+        server: 'https://test.dbrepo.tuwien.ac.at',
       },
       database: {
         image: {
-- 
GitLab