Merge "Improve 32K limit tests"
[cps.git] / cps-ri / src / main / java / org / onap / cps / spi / repository / SchemaSetRepository.java
index a15ce62..3c5f973 100644 (file)
@@ -1,6 +1,8 @@
 /*
  *  ============LICENSE_START=======================================================
  *  Copyright (C) 2020 Pantheon.tech
+ *  Modifications Copyright (C) 2022 TechMahindra Ltd.
+ *  Modifications Copyright (C) 2023 Nordix Foundation
  *  ================================================================================
  *  Licensed under the Apache License, Version 2.0 (the "License");
  *  you may not use this file except in compliance with the License.
 
 package org.onap.cps.spi.repository;
 
+import java.util.Collection;
+import java.util.List;
 import java.util.Optional;
-import javax.validation.constraints.NotNull;
 import org.onap.cps.spi.entities.DataspaceEntity;
 import org.onap.cps.spi.entities.SchemaSetEntity;
 import org.onap.cps.spi.exceptions.SchemaSetNotFoundException;
 import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 
 @Repository
 public interface SchemaSetRepository extends JpaRepository<SchemaSetEntity, Integer> {
 
-    Optional<SchemaSetEntity> findByDataspaceAndName(@NotNull DataspaceEntity dataspaceEntity,
-        @NotNull String schemaSetName);
+    Optional<SchemaSetEntity> findByDataspaceAndName(DataspaceEntity dataspaceEntity, String schemaSetName);
 
-    Integer countByDataspace(@NotNull DataspaceEntity dataspaceEntity);
+    /**
+     * Gets schema sets by dataspace.
+     * @param dataspaceEntity dataspace entity
+     * @return list of schema set entity
+     */
+    List<SchemaSetEntity> findByDataspace(DataspaceEntity dataspaceEntity);
+
+    Integer countByDataspace(DataspaceEntity dataspaceEntity);
 
     /**
      * Gets a schema set by dataspace and schema set name.
@@ -43,9 +55,25 @@ public interface SchemaSetRepository extends JpaRepository<SchemaSetEntity, Inte
      * @return schema set entity
      * @throws SchemaSetNotFoundException if SchemaSet not found
      */
-    default SchemaSetEntity getByDataspaceAndName(@NotNull final DataspaceEntity dataspaceEntity,
-        @NotNull final String schemaSetName) {
+    default SchemaSetEntity getByDataspaceAndName(final DataspaceEntity dataspaceEntity, final String schemaSetName) {
         return findByDataspaceAndName(dataspaceEntity, schemaSetName)
             .orElseThrow(() -> new SchemaSetNotFoundException(dataspaceEntity.getName(), schemaSetName));
     }
+
+    @Modifying
+    @Query(value = "DELETE FROM schema_set WHERE dataspace_id = :dataspaceId AND name = ANY (:schemaSetNames)",
+        nativeQuery = true)
+    void deleteByDataspaceIdAndNameIn(@Param("dataspaceId") final int dataspaceId,
+                                      @Param("schemaSetNames") final String[] schemaSetNames);
+
+    /**
+     * Delete multiple schema sets in a given dataspace.
+     * @param dataspaceEntity dataspace entity
+     * @param schemaSetNames  schema set names
+     */
+    default void deleteByDataspaceAndNameIn(final DataspaceEntity dataspaceEntity,
+                                            final Collection<String> schemaSetNames) {
+        deleteByDataspaceIdAndNameIn(dataspaceEntity.getId(), schemaSetNames.toArray(new String[0]));
+    }
+
 }