]> source.dussan.org Git - sonarqube.git/blob
628a828f1f73860c8da82a7ffc05bc0149f859ec
[sonarqube.git] /
1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "mybatis-3-mapper.dtd">
3
4 <mapper namespace="org.sonar.db.qualitygate.QualityGateUserPermissionsMapper">
5
6   <sql id="sqlColumns">
7     qup.uuid as "uuid",
8     qup.user_uuid as "userUuid",
9     qup.quality_gate_uuid as "qualityGateUuid"
10   </sql>
11
12   <select id="selectByQualityGateAndUser" parameterType="String" resultType="org.sonar.db.qualitygate.QualityGateUserPermissionsDto">
13     select
14     <include refid="sqlColumns"/>
15     from qgate_user_permissions qup
16     where
17     qup.user_uuid = #{userUuid}
18     and qup.quality_gate_uuid = #{qualityGateUuid}
19   </select>
20
21   <insert id="insert" useGeneratedKeys="false" parameterType="map">
22     insert into qgate_user_permissions(
23     uuid,
24     user_uuid,
25     quality_gate_uuid,
26     created_at
27     ) values (
28     #{dto.uuid, jdbcType=VARCHAR},
29     #{dto.userUuid, jdbcType=VARCHAR},
30     #{dto.qualityGateUuid, jdbcType=VARCHAR},
31     #{now, jdbcType=BIGINT}
32     )
33   </insert>
34
35   <select id="countByQuery" resultType="int">
36     select count(u.uuid)
37     <include refid="sqlSelectByQuery"/>
38   </select>
39
40   <select id="selectByQuery" parameterType="map" resultType="org.sonar.db.user.SearchUserMembershipDto">
41     SELECT u.uuid as userUuid, u.name as name, qup.uuid as uuid
42     <include refid="sqlSelectByQuery"/>
43     ORDER BY u.name ASC
44     LIMIT #{pagination.pageSize,jdbcType=INTEGER}
45     OFFSET #{pagination.offset,jdbcType=INTEGER}
46   </select>
47
48   <select id="selectByQuery" parameterType="map" resultType="org.sonar.db.user.SearchUserMembershipDto"
49           databaseId="mssql">
50     select * from (
51     select row_number() over(order by u.name asc) as number,
52     u.uuid as userUuid, u.name as name, qup.uuid as uuid
53     <include refid="sqlSelectByQuery"/>
54     ) as query
55     where
56     query.number between #{pagination.startRowNumber,jdbcType=INTEGER} and #{pagination.endRowNumber,jdbcType=INTEGER}
57     order by query.name asc
58   </select>
59
60   <select id="selectByQuery" parameterType="map" resultType="org.sonar.db.user.SearchUserMembershipDto"
61           databaseId="oracle">
62     select * from (
63     select rownum as rn, t.* from (
64     select u.uuid as userUuid, u.name as name, qup.uuid as uuid
65     <include refid="sqlSelectByQuery"/>
66     order by u.name ASC
67     ) t
68     ) t
69     where
70     t.rn between #{pagination.startRowNumber,jdbcType=INTEGER} and #{pagination.endRowNumber,jdbcType=INTEGER}
71   </select>
72
73   <sql id="sqlSelectByQuery">
74     FROM users u
75     LEFT JOIN qgate_user_permissions qup ON qup.user_uuid=u.uuid AND
76     qup.quality_gate_uuid=#{query.qualityGateUuid, jdbcType=VARCHAR}
77     <where>
78       <choose>
79         <when test="query.getMembership() == 'IN'">
80           AND qup.uuid IS NOT NULL
81         </when>
82         <when test="query.getMembership() == 'OUT'">
83           AND qup.uuid IS NULL
84         </when>
85       </choose>
86       <if test="query.getQuery() != null">
87         AND (
88         lower(u.name) like #{query.querySqlLowercase} ESCAPE '/'
89         or u.login like #{query.querySql} ESCAPE '/')
90       </if>
91       AND u.active=${_true}
92     </where>
93   </sql>
94
95   <delete id="deleteByUser">
96     delete from qgate_user_permissions
97     where user_uuid = #{userUuid}
98   </delete>
99
100   <delete id="deleteByQualityGate">
101     delete from qgate_user_permissions
102     where quality_gate_uuid = #{qualityGateUuid, jdbcType=VARCHAR}
103   </delete>
104
105 </mapper>
106