From: Julien HENRY Date: Fri, 27 Apr 2018 09:46:41 +0000 (+0200) Subject: SONAR-10515 Add method to delete entry in ALM_APP_INSTALLS X-Git-Tag: 7.5~1293 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=5ebd9b983ab34e98b44a81d056fe4fe8c47cc2b3;p=sonarqube.git SONAR-10515 Add method to delete entry in ALM_APP_INSTALLS --- diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/alm/AlmAppInstallDao.java b/server/sonar-db-dao/src/main/java/org/sonar/db/alm/AlmAppInstallDao.java index 03bc10efd59..6d360f4f7f5 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/alm/AlmAppInstallDao.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/alm/AlmAppInstallDao.java @@ -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"); } diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/alm/AlmAppInstallMapper.java b/server/sonar-db-dao/src/main/java/org/sonar/db/alm/AlmAppInstallMapper.java index 300890d1fcf..9a3f4eec310 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/alm/AlmAppInstallMapper.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/alm/AlmAppInstallMapper.java @@ -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); } diff --git a/server/sonar-db-dao/src/main/resources/org/sonar/db/alm/AlmAppInstallMapper.xml b/server/sonar-db-dao/src/main/resources/org/sonar/db/alm/AlmAppInstallMapper.xml index d09f04d46de..262ba4a8b76 100644 --- a/server/sonar-db-dao/src/main/resources/org/sonar/db/alm/AlmAppInstallMapper.xml +++ b/server/sonar-db-dao/src/main/resources/org/sonar/db/alm/AlmAppInstallMapper.xml @@ -42,7 +42,7 @@ and owner_id = #{ownerId, jdbcType=VARCHAR} - + delete from alm_app_installs where alm_id = #{almId, jdbcType=VARCHAR} diff --git a/server/sonar-db-dao/src/test/java/org/sonar/db/alm/AlmAppInstallDaoTest.java b/server/sonar-db-dao/src/test/java/org/sonar/db/alm/AlmAppInstallDaoTest.java index c9df59cd509..a4a24259186 100644 --- a/server/sonar-db-dao/src/test/java/org/sonar/db/alm/AlmAppInstallDaoTest.java +++ b/server/sonar-db-dao/src/test/java/org/sonar/db/alm/AlmAppInstallDaoTest.java @@ -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 row = dbTester.selectFirst( + List> 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() {