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>
|