]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-10515 Add method to delete entry in ALM_APP_INSTALLS
authorJulien HENRY <julien.henry@sonarsource.com>
Fri, 27 Apr 2018 09:46:41 +0000 (11:46 +0200)
committerSonarTech <sonartech@sonarsource.com>
Fri, 27 Apr 2018 18:20:44 +0000 (20:20 +0200)
server/sonar-db-dao/src/main/java/org/sonar/db/alm/AlmAppInstallDao.java
server/sonar-db-dao/src/main/java/org/sonar/db/alm/AlmAppInstallMapper.java
server/sonar-db-dao/src/main/resources/org/sonar/db/alm/AlmAppInstallMapper.xml
server/sonar-db-dao/src/test/java/org/sonar/db/alm/AlmAppInstallDaoTest.java

index 03bc10efd5970b3c9b229c5c376fa5cf0efc072f..6d360f4f7f59476f15d8ecb4a2c781378684e21b 100644 (file)
@@ -79,6 +79,14 @@ public class AlmAppInstallDao implements Dao {
     return Optional.ofNullable(mapper.selectInstallId(alm.getId(), ownerId));
   }
 
+  public void delete(DbSession dbSession, ALM alm, String ownerId) {
+    checkAlm(alm);
+    checkOwnerId(ownerId);
+
+    AlmAppInstallMapper mapper = getMapper(dbSession);
+    mapper.delete(alm.getId(), ownerId);
+  }
+
   private static void checkAlm(@Nullable ALM alm) {
     Objects.requireNonNull(alm, "alm can't be null");
   }
index 300890d1fcf9ac1f38175a9640b0a74b31ab682b..9a3f4eec31086a94110096208705be1f8ed8ad3b 100644 (file)
@@ -31,4 +31,5 @@ public interface AlmAppInstallMapper {
 
   int update(@Param("almId") String almId, @Param("ownerId") String ownerId, @Param("installId") String installId, @Param("now") long now);
 
+  void delete(@Param("almId") String almId, @Param("ownerId") String ownerId);
 }
index d09f04d46de5040d9dc5d4c94ec6b422b111cd2b..262ba4a8b76579ab2dc57dce7293aa0b116854ee 100644 (file)
@@ -42,7 +42,7 @@
       and owner_id = #{ownerId, jdbcType=VARCHAR}
   </update>
 
-  <delete id="deleteByOwnerId" parameterType="Map">
+  <delete id="delete" parameterType="Map">
     delete from alm_app_installs
     where
       alm_id = #{almId, jdbcType=VARCHAR}
index c9df59cd509da87f1e8e9c6781aef47475d681b0..a4a24259186fce6df82bf64c3a6d25655d13b05b 100644 (file)
@@ -19,6 +19,7 @@
  */
 package org.sonar.db.alm;
 
+import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 import javax.annotation.CheckForNull;
@@ -107,6 +108,28 @@ public class AlmAppInstallDaoTest {
       .hasUpdatedAt(DATE);
   }
 
+  @Test
+  public void delete() {
+    when(uuidFactory.create()).thenReturn(A_UUID);
+    when(system2.now()).thenReturn(DATE);
+    underTest.insertOrUpdate(dbSession, GITHUB, A_OWNER, AN_INSTALL);
+
+    assertThatAlmAppInstall(GITHUB, A_OWNER)
+      .hasInstallId(AN_INSTALL)
+      .hasCreatedAt(DATE)
+      .hasUpdatedAt(DATE);
+
+    underTest.delete(dbSession, GITHUB, A_OWNER);
+    assertThatAlmAppInstall(GITHUB, A_OWNER).doesNotExist();
+  }
+
+  @Test
+  public void delete_doesn_t_fail() {
+    assertThatAlmAppInstall(GITHUB, A_OWNER).doesNotExist();
+
+    underTest.delete(dbSession, GITHUB, A_OWNER);
+  }
+
   @Test
   public void update() {
     when(uuidFactory.create()).thenReturn(A_UUID);
@@ -202,16 +225,22 @@ public class AlmAppInstallDaoTest {
     }
 
     private static AlmAppInstall asAlmAppInstall(DbTester dbTester, DbSession dbSession, AlmAppInstallDao.ALM alm, String ownerId) {
-      Map<String, Object> row = dbTester.selectFirst(
+      List<Map<String, Object>> rows = dbTester.select(
         dbSession,
         "select" +
           " install_id as \"installId\", created_at as \"createdAt\", updated_at as \"updatedAt\"" +
           " from alm_app_installs" +
           " where alm_id='" + alm.getId() + "' and owner_id='" + ownerId + "'");
+      if (rows.isEmpty()) {
+        return null;
+      }
+      if (rows.size() > 1) {
+        throw new IllegalStateException("Unique index violation");
+      }
       return new AlmAppInstall(
-        (String) row.get("installId"),
-        (Long) row.get("createdAt"),
-        (Long) row.get("updatedAt"));
+        (String) rows.get(0).get("installId"),
+        (Long) rows.get(0).get("createdAt"),
+        (Long) rows.get(0).get("updatedAt"));
     }
 
     public void doesNotExist() {