aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-db-dao/src/main/resources/org/sonar/db/user/UserTokenMapper.xml
blob: 775f344e500498ab683ad01e5bcd7a86aad56570 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "mybatis-3-mapper.dtd">

<mapper namespace="org.sonar.db.user.UserTokenMapper">

  <sql id="userTokensColumns">
    t.uuid as "uuid",
    t.user_uuid as "userUuid",
    t.name as "name",
    t.token_hash as "tokenHash",
    t.last_connection_date as "lastConnectionDate",
    t.created_at as "createdAt",
    t.project_uuid as "projectUuid",
    t.type as "type",
    t.expiration_date as "expirationDate",
    p.name as "projectName",
    p.kee as "projectKey"
  </sql>

  <insert id="insert" parameterType="UserToken" useGeneratedKeys="false">
    insert into user_tokens (
    uuid,
    user_uuid,
    name,
    token_hash,
    created_at,
    project_uuid,
    type,
    expiration_date
    ) values (
    #{uuid, jdbcType=VARCHAR},
    #{userUuid, jdbcType=VARCHAR},
    #{name, jdbcType=VARCHAR},
    #{tokenHash, jdbcType=VARCHAR},
    #{createdAt, jdbcType=BIGINT},
    #{projectUuid, jdbcType=VARCHAR},
    #{type, jdbcType=VARCHAR},
    #{expirationDate, jdbcType=BIGINT}
    )
  </insert>

  <update id="update" parameterType="UserToken">
    UPDATE user_tokens SET
      last_connection_date = #{lastConnectionDate, jdbcType=BIGINT}
    WHERE
      user_uuid = #{userUuid, jdbcType=VARCHAR}
      AND name = #{name, jdbcType=VARCHAR}
  </update>

  <select id="selectByTokenHash" parameterType="String" resultType="UserToken">
    SELECT
    <include refid="userTokensColumns"/>
    FROM user_tokens t
    LEFT JOIN projects p on t.project_uuid = p.uuid
    WHERE t.token_hash=#{tokenHash, jdbcType=VARCHAR}
  </select>

  <select id="selectTokensExpiredOnDate" parameterType="Long" resultType="UserToken">
    SELECT
    <include refid="userTokensColumns"/>
    FROM user_tokens t
    LEFT JOIN projects p on t.project_uuid = p.uuid
    WHERE t.expiration_date = #{timestamp, jdbcType=BIGINT}
  </select>

  <select id="selectByUserUuidAndName" parameterType="map" resultType="UserToken">
    SELECT
    <include refid="userTokensColumns"/>
    FROM user_tokens t
    LEFT JOIN projects p on t.project_uuid = p.uuid
    WHERE t.user_uuid=#{userUuid, jdbcType=VARCHAR} and t.name=#{name, jdbcType=VARCHAR}
  </select>

  <select id="selectByUserUuid" parameterType="map" resultType="UserToken">
    SELECT
    <include refid="userTokensColumns"/>
    FROM user_tokens t
    LEFT JOIN projects p on t.project_uuid = p.uuid
    WHERE t.user_uuid=#{userUuid, jdbcType=VARCHAR}
  </select>
  
  <select id="countTokensByUserUuids" parameterType="map" resultType="UserTokenCount">
    SELECT t.user_uuid as "userUuid", count(t.name) as "tokenCount"
    FROM user_tokens t
    WHERE t.user_uuid in
    <foreach collection="userUuids" open="(" close=")" item="userUuid" separator=",">
      #{userUuid, jdbcType=VARCHAR}
    </foreach>
    GROUP BY t.user_uuid
  </select>

  <delete id="deleteByUserUuid">
    DELETE FROM user_tokens WHERE user_uuid=#{userUuid, jdbcType=VARCHAR}
  </delete>

  <delete id="deleteByUserUuidAndName">
    DELETE FROM user_tokens WHERE user_uuid=#{userUuid, jdbcType=VARCHAR} and name=#{name, jdbcType=VARCHAR}
  </delete>

  <delete id="deleteByProjectUuid">
    DELETE FROM user_tokens WHERE project_uuid=#{projectUuid, jdbcType=VARCHAR}
  </delete>

</mapper>