You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ma...@apache.org on 2023/02/17 14:19:55 UTC

[airavata-data-catalog] 05/05: Additional methods to manage metadata schemas

This is an automated email from the ASF dual-hosted git repository.

machristie pushed a commit to branch machristie/issue7
in repository https://gitbox.apache.org/repos/asf/airavata-data-catalog.git

commit 88be4d08bbbb4f233f04f98cb99b7b95bad52bc5
Author: Marcus Christie <ma...@apache.org>
AuthorDate: Wed Feb 15 15:57:25 2023 -0500

    Additional methods to manage metadata schemas
---
 .../repository/MetadataSchemaFieldRepository.java  |  2 +
 .../api/service/DataCatalogAPIService.java         | 43 ++++++++++++++++++----
 .../stubs/src/main/proto/DataCatalogAPI.proto      |  2 +-
 3 files changed, 38 insertions(+), 9 deletions(-)

diff --git a/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/repository/MetadataSchemaFieldRepository.java b/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/repository/MetadataSchemaFieldRepository.java
index e237dac..c8503db 100644
--- a/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/repository/MetadataSchemaFieldRepository.java
+++ b/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/repository/MetadataSchemaFieldRepository.java
@@ -8,4 +8,6 @@ import org.springframework.data.jpa.repository.JpaRepository;
 public interface MetadataSchemaFieldRepository extends JpaRepository<MetadataSchemaFieldEntity, Long> {
 
     List<MetadataSchemaFieldEntity> findByMetadataSchema_SchemaName(String schemaName);
+
+    MetadataSchemaFieldEntity findByFieldNameAndSchema_SchemaName(String fieldName, String schemaName);
 }
diff --git a/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/service/DataCatalogAPIService.java b/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/service/DataCatalogAPIService.java
index 7374def..d001e46 100644
--- a/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/service/DataCatalogAPIService.java
+++ b/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/service/DataCatalogAPIService.java
@@ -19,6 +19,8 @@ import org.apache.airavata.datacatalog.api.DataProductUpdateRequest;
 import org.apache.airavata.datacatalog.api.DataProductUpdateResponse;
 import org.apache.airavata.datacatalog.api.MetadataSchemaCreateRequest;
 import org.apache.airavata.datacatalog.api.MetadataSchemaCreateResponse;
+import org.apache.airavata.datacatalog.api.MetadataSchemaDeleteRequest;
+import org.apache.airavata.datacatalog.api.MetadataSchemaDeleteResponse;
 import org.apache.airavata.datacatalog.api.MetadataSchemaField;
 import org.apache.airavata.datacatalog.api.MetadataSchemaFieldCreateRequest;
 import org.apache.airavata.datacatalog.api.MetadataSchemaFieldCreateResponse;
@@ -196,17 +198,30 @@ public class DataCatalogAPIService extends DataCatalogAPIServiceGrpc.DataCatalog
     }
 
     @Override
-    public void deleteMetadataSchema(MetadataSchemaCreateRequest request,
-            StreamObserver<MetadataSchemaCreateResponse> responseObserver) {
-        // TODO Auto-generated method stub
-        super.deleteMetadataSchema(request, responseObserver);
+    public void deleteMetadataSchema(MetadataSchemaDeleteRequest request,
+            StreamObserver<MetadataSchemaDeleteResponse> responseObserver) {
+        // TODO: check that user has write access on metadata schema
+        // TODO: handle metadata schema not found
+        MetadataSchemaEntity metadataSchemaEntity = metadataSchemaRepository
+                .findBySchemaName(request.getMetadataSchema().getSchemaName());
+        metadataSchemaRepository.delete(metadataSchemaEntity);
+        MetadataSchemaDeleteResponse.Builder responseBuilder = MetadataSchemaDeleteResponse.newBuilder();
+        responseObserver.onNext(responseBuilder.build());
+        responseObserver.onCompleted();
     }
 
     @Override
     public void deleteMetadataSchemaField(MetadataSchemaFieldDeleteRequest request,
             StreamObserver<MetadataSchemaFieldDeleteResponse> responseObserver) {
-        // TODO Auto-generated method stub
-        super.deleteMetadataSchemaField(request, responseObserver);
+        // TODO: check that user has write access on metadata schema field
+        // TODO: handle metadata schema field not found
+        MetadataSchemaFieldEntity metadataSchemaFieldEntity = metadataSchemaFieldRepository
+                .findByFieldNameAndSchema_SchemaName(request.getMetadataSchemaField().getFieldName(),
+                        request.getMetadataSchemaField().getSchemaName());
+        metadataSchemaFieldRepository.delete(metadataSchemaFieldEntity);
+        MetadataSchemaFieldDeleteResponse.Builder responseBuilder = MetadataSchemaFieldDeleteResponse.newBuilder();
+        responseObserver.onNext(responseBuilder.build());
+        responseObserver.onCompleted();
     }
 
     @Override
@@ -248,7 +263,19 @@ public class DataCatalogAPIService extends DataCatalogAPIServiceGrpc.DataCatalog
     @Override
     public void updateMetadataSchemaField(MetadataSchemaFieldUpdateRequest request,
             StreamObserver<MetadataSchemaFieldUpdateResponse> responseObserver) {
-        // TODO Auto-generated method stub
-        super.updateMetadataSchemaField(request, responseObserver);
+
+        // TODO: check that user has write access on metadata schema field
+        // TODO: handle metadata schema field not found
+        MetadataSchemaFieldEntity metadataSchemaFieldEntity = metadataSchemaFieldRepository
+                .findByFieldNameAndSchema_SchemaName(request.getMetadataSchemaField().getFieldName(),
+                        request.getMetadataSchemaField().getSchemaName());
+        metadataSchemaFieldMapper.mapModelToEntity(request.getMetadataSchemaField(), metadataSchemaFieldEntity);
+        metadataSchemaFieldRepository.save(metadataSchemaFieldEntity);
+
+        MetadataSchemaFieldUpdateResponse.Builder responseBuilder = MetadataSchemaFieldUpdateResponse.newBuilder();
+        metadataSchemaFieldMapper.mapEntityToModel(metadataSchemaFieldEntity,
+                responseBuilder.getMetadataSchemaFieldBuilder());
+        responseObserver.onNext(responseBuilder.build());
+        responseObserver.onCompleted();
     }
 }
diff --git a/data-catalog-api/stubs/src/main/proto/DataCatalogAPI.proto b/data-catalog-api/stubs/src/main/proto/DataCatalogAPI.proto
index 7d91b8b..74261d1 100644
--- a/data-catalog-api/stubs/src/main/proto/DataCatalogAPI.proto
+++ b/data-catalog-api/stubs/src/main/proto/DataCatalogAPI.proto
@@ -178,7 +178,7 @@ service DataCatalogAPIService {
     rpc deleteDataProduct(DataProductDeleteRequest) returns (DataProductDeleteResponse){}
     rpc getMetadataSchema(MetadataSchemaGetRequest) returns (MetadataSchemaGetResponse){}
     rpc createMetadataSchema(MetadataSchemaCreateRequest) returns (MetadataSchemaCreateResponse){}
-    rpc deleteMetadataSchema(MetadataSchemaCreateRequest) returns (MetadataSchemaCreateResponse){}
+    rpc deleteMetadataSchema(MetadataSchemaDeleteRequest) returns (MetadataSchemaDeleteResponse){}
     rpc createMetadataSchemaField(MetadataSchemaFieldCreateRequest) returns (MetadataSchemaFieldCreateResponse){}
     rpc updateMetadataSchemaField(MetadataSchemaFieldUpdateRequest) returns (MetadataSchemaFieldUpdateResponse){}
     rpc deleteMetadataSchemaField(MetadataSchemaFieldDeleteRequest) returns (MetadataSchemaFieldDeleteResponse){}