]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-23064 Add POST endpoint api/projects/set_ai_code_assurance
authorMatteo Mara <matteo.mara@sonarsource.com>
Wed, 18 Sep 2024 12:02:01 +0000 (14:02 +0200)
committersonartech <sonartech@sonarsource.com>
Wed, 25 Sep 2024 20:02:53 +0000 (20:02 +0000)
server/sonar-db-dao/src/it/java/org/sonar/db/project/ProjectDaoIT.java
server/sonar-db-dao/src/main/java/org/sonar/db/project/ProjectDao.java
server/sonar-db-dao/src/main/java/org/sonar/db/project/ProjectMapper.java
server/sonar-db-dao/src/main/resources/org/sonar/db/project/ProjectMapper.xml

index b11f64c0a944df5588442f8f75cb26828e56922c..6209b00b976aed7fdc66738840254fa33030d87a 100644 (file)
@@ -262,6 +262,28 @@ class ProjectDaoIT {
     assertProject(projectsByUuids.get(1), "projectName_p2", "projectKee_o1_p2", "uuid_o1_p2", "desc_p2", "tag1,tag2", true);
   }
 
+  @Test
+  void update_aiCodeAssurance() {
+    ProjectDto dto1 = createProject("o1", "p1").setAiCodeAssurance(true);
+    ProjectDto dto2 = createProject("o1", "p2");
+
+    projectDao.insert(db.getSession(), dto1);
+    projectDao.insert(db.getSession(), dto2);
+
+    List<ProjectDto> projectsByUuids = projectDao.selectByUuids(db.getSession(), new HashSet<>(Arrays.asList("uuid_o1_p1", "uuid_o1_p2")));
+    assertThat(projectsByUuids).hasSize(2);
+    assertProject(projectsByUuids.get(0), "projectName_p1", "projectKee_o1_p1", "uuid_o1_p1", "desc_p1", "tag1,tag2", false, true);
+    assertProject(projectsByUuids.get(1), "projectName_p2", "projectKee_o1_p2", "uuid_o1_p2", "desc_p2", "tag1,tag2", false, false);
+
+    projectDao.updateAiCodeAssurance(db.getSession(), dto1.getUuid(), false);
+    projectDao.updateAiCodeAssurance(db.getSession(), dto2.getUuid(), true);
+
+    projectsByUuids = projectDao.selectByUuids(db.getSession(), new HashSet<>(Arrays.asList("uuid_o1_p1", "uuid_o1_p2")));
+    assertThat(projectsByUuids).hasSize(2);
+    assertProject(projectsByUuids.get(0), "projectName_p1", "projectKee_o1_p1", "uuid_o1_p1", "desc_p1", "tag1,tag2", false, false);
+    assertProject(projectsByUuids.get(1), "projectName_p2", "projectKee_o1_p2", "uuid_o1_p2", "desc_p2", "tag1,tag2", false, true);
+  }
+
   @Test
   void select_by_uuids() {
     ProjectDto dto1 = createProject("o1", "p1");
@@ -490,8 +512,12 @@ class ProjectDaoIT {
   }
 
   private void assertProject(ProjectDto dto, String name, String kee, String uuid, String desc, @Nullable String tags, boolean isPrivate) {
-    assertThat(dto).extracting("name", "kee", "key", "uuid", "description", "tagsString", "private")
-      .containsExactly(name, kee, kee, uuid, desc, tags, isPrivate);
+    assertProject(dto, name, kee, uuid, desc, tags, isPrivate, false);
+  }
+
+  private void assertProject(ProjectDto dto, String name, String kee, String uuid, String desc, @Nullable String tags, boolean isPrivate, boolean isAiCodeAssurance) {
+    assertThat(dto).extracting("name", "kee", "key", "uuid", "description", "tagsString", "private", "aiCodeAssurance")
+      .containsExactly(name, kee, kee, uuid, desc, tags, isPrivate, isAiCodeAssurance);
   }
 
   private ProjectDto createProject(String org, String name) {
index 7da97de7eefbccaee2cce2d26672151fcde01b4c..20f41f792274e62e4421cc3a53cc67981adc6fbd 100644 (file)
@@ -123,6 +123,10 @@ public class ProjectDao implements Dao {
     mapper(session).updateVisibility(uuid, isPrivate, system2.now());
   }
 
+  public void updateAiCodeAssurance(DbSession session, String uuid, boolean aiCodeAssurance) {
+    mapper(session).updateAiCodeAssurance(uuid, aiCodeAssurance, system2.now());
+  }
+
   public void updateTags(DbSession session, ProjectDto project) {
     mapper(session).updateTags(project);
   }
index c31542346f471f9df741b3321a1ecdee99333a61..3ee4d95435d6e1aeb2a07713db348af3f4909cfc 100644 (file)
@@ -59,6 +59,8 @@ public interface ProjectMapper {
 
   void updateVisibility(@Param("uuid") String uuid, @Param("isPrivate") boolean isPrivate, @Param("updatedAt") long updatedAt);
 
+  void updateAiCodeAssurance(@Param("uuid") String uuid, @Param("aiCodeAssurance") boolean aiCodeAssurance, @Param("updatedAt") long updatedAt);
+
   List<ProjectDto> selectAllApplications();
 
   List<ProjectDto> selectApplicationsByKeys(@Param("kees") Collection<String> kees);
index 47e09da2ec7d9a9ae804bbae1db057cc9f17345d..abfd58f2f88ba01abae91381f45d5dab2063d968 100644 (file)
     uuid = #{uuid,jdbcType=VARCHAR}
   </update>
 
+  <update id="updateAiCodeAssurance">
+    update projects set
+    ai_code_assurance = #{aiCodeAssurance,jdbcType=BOOLEAN},
+    updated_at = #{updatedAt,jdbcType=BIGINT}
+    where
+    uuid = #{uuid,jdbcType=VARCHAR}
+  </update>
 
   <update id="updateNcloc">
     update projects set