diff options
author | Pierre <pierre.guillot@sonarsource.com> | 2021-11-12 14:30:05 +0100 |
---|---|---|
committer | sonartech <sonartech@sonarsource.com> | 2021-11-15 20:04:34 +0000 |
commit | d6f8681d2d6faeac76be9e6afba3f67c9dc89f12 (patch) | |
tree | bb7e2fe16a50eaca86066987fb3d92c40e966b55 /server | |
parent | be0ec91f613a1028a347c83f624514e0f55b3a1b (diff) | |
download | sonarqube-d6f8681d2d6faeac76be9e6afba3f67c9dc89f12.tar.gz sonarqube-d6f8681d2d6faeac76be9e6afba3f67c9dc89f12.zip |
SONAR-13426 purge project_badge_token when a project is deleted
Diffstat (limited to 'server')
5 files changed, 28 insertions, 0 deletions
diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/purge/PurgeCommands.java b/server/sonar-db-dao/src/main/java/org/sonar/db/purge/PurgeCommands.java index 402bf9ef5b8..c16a1741dd9 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/purge/PurgeCommands.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/purge/PurgeCommands.java @@ -424,6 +424,13 @@ class PurgeCommands { profiler.stop(); } + public void deleteProjectBadgeToken(String rootUuid) { + profiler.start("deleteProjectBadgeToken (project_badge_token)"); + purgeMapper.deleteProjectBadgeTokenByProjectUuid(rootUuid); + session.commit(); + profiler.stop(); + } + void deleteBranch(String rootUuid) { profiler.start("deleteBranch (project_branches)"); purgeMapper.deleteApplicationBranchProjectBranchesByProjectBranchUuid(rootUuid); @@ -464,4 +471,5 @@ class PurgeCommands { session.commit(); profiler.stop(); } + } diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/purge/PurgeDao.java b/server/sonar-db-dao/src/main/java/org/sonar/db/purge/PurgeDao.java index 7e0d1efd9ac..f86fa31d477 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/purge/PurgeDao.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/purge/PurgeDao.java @@ -235,6 +235,7 @@ public class PurgeDao implements Dao { commands.deleteProjectInPortfolios(rootUuid); commands.deleteComponents(rootUuid); commands.deleteComponentsByMainBranchProjectUuid(rootUuid); + commands.deleteProjectBadgeToken(rootUuid); commands.deleteProject(rootUuid); commands.deleteUserDismissedMessages(rootUuid); commands.deleteOutdatedProperties(rootUuid); diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/purge/PurgeMapper.java b/server/sonar-db-dao/src/main/java/org/sonar/db/purge/PurgeMapper.java index 348d043c7d5..f88c7e6dcda 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/purge/PurgeMapper.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/purge/PurgeMapper.java @@ -163,6 +163,8 @@ public interface PurgeMapper { void deleteProjectAlmSettingsByProjectUuid(@Param("projectUuid") String projectUuid); + void deleteProjectBadgeTokenByProjectUuid(@Param("projectUuid") String rootUuid); + void deleteUserDismissedMessagesByProjectUuid(@Param("projectUuid") String projectUuid); } diff --git a/server/sonar-db-dao/src/main/resources/org/sonar/db/purge/PurgeMapper.xml b/server/sonar-db-dao/src/main/resources/org/sonar/db/purge/PurgeMapper.xml index 604300faae0..d84ed709dd7 100644 --- a/server/sonar-db-dao/src/main/resources/org/sonar/db/purge/PurgeMapper.xml +++ b/server/sonar-db-dao/src/main/resources/org/sonar/db/purge/PurgeMapper.xml @@ -538,6 +538,10 @@ delete from project_alm_settings where project_uuid=#{projectUuid,jdbcType=VARCHAR} </delete> + <delete id="deleteProjectBadgeTokenByProjectUuid"> + delete from project_badge_token where project_uuid=#{projectUuid,jdbcType=VARCHAR} + </delete> + <delete id="deleteBranchByUuid"> delete from project_branches where uuid=#{uuid,jdbcType=VARCHAR} </delete> diff --git a/server/sonar-db-dao/src/test/java/org/sonar/db/purge/PurgeDaoTest.java b/server/sonar-db-dao/src/test/java/org/sonar/db/purge/PurgeDaoTest.java index 5809ea842ea..580df5cd4a3 100644 --- a/server/sonar-db-dao/src/test/java/org/sonar/db/purge/PurgeDaoTest.java +++ b/server/sonar-db-dao/src/test/java/org/sonar/db/purge/PurgeDaoTest.java @@ -1372,6 +1372,19 @@ public class PurgeDaoTest { } @Test + public void deleteProject_deletes_project_badge_tokens() { + ProjectDto project = db.components().insertPublicProjectDto(); + ProjectDto otherProject = db.components().insertPublicProjectDto(); + dbClient.projectBadgeTokenDao().insert(dbSession, "token_to_delete", project, "user-uuid", "user-login"); + dbClient.projectBadgeTokenDao().insert(dbSession, "token_to_not_delete", otherProject, "user-uuid", "user-login"); + + underTest.deleteProject(dbSession, project.getUuid(), project.getQualifier(), project.getName(), project.getKey()); + + assertThat(dbClient.projectBadgeTokenDao().selectTokenByProject(dbSession, project)).isNull(); + assertThat(dbClient.projectBadgeTokenDao().selectTokenByProject(dbSession, otherProject)).isNotNull(); + } + + @Test public void deleteProject_deletes_portfolio_projects() { ComponentDto portfolio1 = db.components().insertPrivatePortfolio(); ComponentDto portfolio2 = db.components().insertPrivatePortfolio(); |