]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-8892 Select an organization member in DB
authorTeryk Bellahsene <teryk.bellahsene@sonarsource.com>
Thu, 9 Mar 2017 13:44:31 +0000 (14:44 +0100)
committerJulien Lancelot <julien.lancelot@sonarsource.com>
Tue, 21 Mar 2017 12:05:50 +0000 (13:05 +0100)
server/sonar-db-dao/src/main/java/org/sonar/db/organization/OrganizationMemberDao.java
server/sonar-db-dao/src/main/java/org/sonar/db/organization/OrganizationMemberMapper.java
server/sonar-db-dao/src/main/resources/org/sonar/db/organization/OrganizationMemberMapper.xml
server/sonar-db-dao/src/test/java/org/sonar/db/organization/OrganizationMemberDaoTest.java

index 81668a5174ab6f16d22c521b7f5034767b961161..cf8a9791ca791f3c312d16d0245019cadd4ccffb 100644 (file)
@@ -20,6 +20,7 @@
 
 package org.sonar.db.organization;
 
+import java.util.Optional;
 import org.sonar.db.Dao;
 import org.sonar.db.DbSession;
 
@@ -28,7 +29,11 @@ public class OrganizationMemberDao implements Dao {
     mapper(dbSession).insert(organizationMemberDto);
   }
 
-  private OrganizationMemberMapper mapper(DbSession dbSession) {
+  public Optional<OrganizationMemberDto> select(DbSession dbSession, String organizationUuid, int userId) {
+    return Optional.ofNullable(mapper(dbSession).select(organizationUuid, userId));
+  }
+
+  private static OrganizationMemberMapper mapper(DbSession dbSession) {
     return dbSession.getMapper(OrganizationMemberMapper.class);
   }
 }
index cec53d6b1494f053e14ab9588340dfa5a8fc9486..7c2cc845f1d5437acb265d143f3de8a008066890 100644 (file)
 
 package org.sonar.db.organization;
 
+import org.apache.ibatis.annotations.Param;
+
 public interface OrganizationMemberMapper {
   void insert(OrganizationMemberDto organizationMember);
+
+  OrganizationMemberDto select(@Param("organizationUuid") String organizationUuid, @Param("userId") int userId);
 }
index bdb144975a3b896bf44212716ff1e1fbce3a09de..9f657932e48491e1b1d465152e28a566d041e5cd 100644 (file)
@@ -3,6 +3,20 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 
 <mapper namespace="org.sonar.db.organization.OrganizationMemberMapper">
+  <sql id="selectColumns">
+    om.organization_uuid as "organizationUuid",
+    om.user_id as "userId"
+  </sql>
+
+  <select id="select" resultType="OrganizationMember">
+    select
+    <include refid="selectColumns"/>
+    from organization_members om
+    where
+    om.organization_uuid = #{organizationUuid, jdbcType=VARCHAR}
+    and om.user_id = #{userId, jdbcType=INTEGER}
+  </select>
+
   <insert id="insert" parameterType="OrganizationMember" useGeneratedKeys="false">
     insert into organization_members
     (
index 09c82d526e42a31beb2559b8a8542a64b59f4399..960418af39effddbdea291e0e46b5867b94b1bbe 100644 (file)
@@ -21,6 +21,7 @@
 package org.sonar.db.organization;
 
 import java.util.Map;
+import java.util.Optional;
 import org.apache.ibatis.exceptions.PersistenceException;
 import org.junit.Rule;
 import org.junit.Test;
@@ -43,6 +44,18 @@ public class OrganizationMemberDaoTest {
 
   private OrganizationMemberDao underTest = dbClient.organizationMemberDao();
 
+  @Test
+  public void select() {
+    underTest.insert(dbSession, create("O1", 512));
+
+    Optional<OrganizationMemberDto> result = underTest.select(dbSession, "O1", 512);
+
+    assertThat(result).isPresent();
+    assertThat(result.get()).extracting(OrganizationMemberDto::getOrganizationUuid, OrganizationMemberDto::getUserId).containsExactly("O1", 512);
+    assertThat(underTest.select(dbSession, "O1", 256)).isNotPresent();
+    assertThat(underTest.select(dbSession, "O2", 512)).isNotPresent();
+  }
+
   @Test
   public void insert() {
     underTest.insert(dbSession, create("O_1", 256));