package org.sonar.db.organization;
+import java.util.Optional;
import org.sonar.db.Dao;
import org.sonar.db.DbSession;
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);
}
}
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);
}
<!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
(
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;
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));