123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219 |
- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-
- <mapper namespace="org.sonar.db.permission.PermissionTemplateMapper">
-
- <insert id="insert" parameterType="PermissionTemplate" keyColumn="id" useGeneratedKeys="true" keyProperty="id">
- INSERT INTO permission_templates (name, kee, description, key_pattern, created_at, updated_at)
- VALUES (#{name}, #{kee}, #{description}, #{keyPattern}, #{createdAt}, #{updatedAt})
- </insert>
-
- <update id="update" parameterType="PermissionTemplate">
- UPDATE permission_templates
- SET name = #{name}, description = #{description}, key_pattern = #{keyPattern}, updated_at = #{updatedAt}
- WHERE id = #{id}
- </update>
-
- <delete id="delete" parameterType="long">
- DELETE FROM permission_templates
- WHERE id = #{templateId}
- </delete>
-
- <delete id="deleteUsersPermissions" parameterType="long">
- DELETE FROM perm_templates_users
- WHERE template_id = #{templateId}
- </delete>
-
- <delete id="deleteGroupsPermissions" parameterType="long">
- DELETE FROM perm_templates_groups
- WHERE template_id = #{templateId}
- </delete>
-
- <insert id="insertUserPermission" parameterType="PermissionTemplateUser">
- INSERT INTO perm_templates_users (template_id, user_id, permission_reference, created_at, updated_at)
- VALUES (#{templateId}, #{userId}, #{permission}, #{createdAt}, #{updatedAt})
- </insert>
-
- <delete id="deleteUserPermission" parameterType="PermissionTemplateUser">
- DELETE FROM perm_templates_users
- WHERE template_id = #{templateId}
- AND user_id = #{userId}
- AND permission_reference = #{permission}
- </delete>
-
- <insert id="insertGroupPermission" parameterType="PermissionTemplateGroup">
- INSERT INTO perm_templates_groups (template_id, group_id, permission_reference, created_at, updated_at)
- VALUES (#{templateId}, #{groupId}, #{permission}, #{createdAt}, #{updatedAt})
- </insert>
-
- <delete id="deleteGroupPermission" parameterType="PermissionTemplateGroup">
- DELETE FROM perm_templates_groups
- WHERE template_id = #{templateId}
- AND permission_reference = #{permission}
- AND
- <choose>
- <when test="groupId != null">
- group_id = #{groupId}
- </when>
- <otherwise>
- group_id IS NULL
- </otherwise>
- </choose>
- </delete>
-
- <delete id="deleteByGroupId" parameterType="long">
- DELETE FROM perm_templates_groups
- WHERE group_id = #{groupId}
- </delete>
-
- <select id="selectUsers" parameterType="map" resultType="UserWithPermission">
- SELECT u.login as login, u.name as name, ptu.permission_reference as permission
- <include refid="usersSelection"/>
- ORDER BY u.name
- </select>
-
- <select id="countUsers" parameterType="map" resultType="int">
- SELECT count(u.login)
- <include refid="usersSelection"/>
- </select>
-
- <sql id="usersSelection">
- FROM users u
- LEFT JOIN perm_templates_users ptu ON ptu.user_id=u.id
- AND ptu.permission_reference=#{query.permission}
- AND ptu.template_id=#{templateId}
- <where>
- u.active = ${_true}
- <choose>
- <when test="query.membership() == 'IN'">
- AND ptu.permission_reference IS NOT NULL
- </when>
- <when test="query.membership() == 'OUT'">
- AND ptu.permission_reference IS NULL
- </when>
- </choose>
- <if test="query.search() != null">
- AND (UPPER(u.name) LIKE #{query.searchSql} ESCAPE '/')
- </if>
- </where>
- </sql>
-
- <select id="selectGroups" parameterType="map" resultType="GroupWithPermission">
- SELECT name, description, permission FROM
- (SELECT g.name as name, g.description as description, ptg.permission_reference as permission
- FROM groups g
- LEFT JOIN perm_templates_groups ptg ON ptg.group_id=g.id
- AND ptg.permission_reference=#{query.permission}
- AND ptg.template_id=#{templateId}
- UNION
- -- Add Anyone group permission
- SELECT #{anyoneGroup} as name, NULL as description, ptg.permission_reference as permission
- FROM perm_templates_groups ptg
- <where>
- AND ptg.permission_reference=#{query.permission}
- AND ptg.template_id=#{templateId}
- AND ptg.group_id IS NULL
- </where>
- ) groups
- <where>
- <if test="query.search() != null">
- AND (UPPER(groups.name) LIKE #{query.searchSql} ESCAPE '/')
- </if>
- </where>
- ORDER BY groups.name
- </select>
-
- <select id="countGroups" parameterType="map" resultType="int">
- SELECT count(name) FROM
- (SELECT g.name as name, g.description as description, ptg.permission_reference as permission
- FROM groups g
- LEFT JOIN perm_templates_groups ptg ON ptg.group_id=g.id
- AND ptg.permission_reference=#{query.permission}
- AND ptg.template_id=#{templateId}
- UNION
- -- Add Anyone group permission
- SELECT #{anyoneGroup} as name, NULL as description, ptg.permission_reference as permission
- FROM perm_templates_groups ptg
- <where>
- AND ptg.permission_reference=#{query.permission}
- AND ptg.template_id=#{templateId}
- AND ptg.group_id IS NULL
- </where>
- ) groups
- <where>
- <if test="query.search() != null">
- AND (UPPER(groups.name) LIKE #{query.searchSql} ESCAPE '/')
- </if>
- </where>
- </select>
-
- <select id="selectByKey" parameterType="String" resultType="PermissionTemplate">
- SELECT id, name, kee, description, key_pattern AS keyPattern, created_at AS createdAt, updated_at AS updatedAt
- FROM permission_templates
- WHERE kee = #{kee}
- </select>
-
- <select id="selectAllPermissionTemplates" resultType="PermissionTemplate">
- SELECT id, name, kee, description, key_pattern AS keyPattern, created_at AS createdAt, updated_at AS updatedAt
- FROM permission_templates
- </select>
-
- <select id="selectTemplateUsersPermissions" parameterType="String" resultMap="fullPermissionsTemplateResult">
- SELECT pt.id AS template_id,
- pt.name AS template_name,
- pt.description AS template_description,
- pt.key_pattern AS template_key_pattern,
- pt.created_at AS template_created_at,
- pt.updated_at AS template_updated_at,
- ptu.id AS permission_template_user_id,
- ptu.permission_reference AS user_permission,
- ptu.user_id AS user_id,
- u.name AS user_name,
- u.login AS user_login
- FROM permission_templates pt
- INNER JOIN perm_templates_users ptu ON ptu.template_id = pt.id
- INNER JOIN users u ON u.id = ptu.user_id AND u.active = ${_true}
- WHERE pt.kee = #{templateKey}
- </select>
-
- <select id="selectTemplateGroupsPermissions" parameterType="String" resultMap="fullPermissionsTemplateResult">
- SELECT pt.id AS template_id,
- pt.name AS template_name,
- pt.description AS template_description,
- pt.key_pattern AS template_key_pattern,
- pt.created_at AS template_created_at,
- pt.updated_at AS template_updated_at,
- ptg.id AS permission_template_group_id,
- ptg.permission_reference AS group_permission,
- ptg.group_id AS group_id,
- g.name AS group_name
- FROM permission_templates pt
- INNER JOIN perm_templates_groups ptg ON ptg.template_id = pt.id
- LEFT OUTER JOIN groups g ON g.id = ptg.group_id
- WHERE pt.kee = #{templateKey}
- AND (g.name IS NOT NULL OR ptg.group_id IS NULL)
- </select>
-
- <resultMap id="fullPermissionsTemplateResult" type="PermissionTemplate">
- <id property="id" column="template_id"/>
- <result property="name" column="template_name"/>
- <result property="description" column="template_description"/>
- <result property="keyPattern" column="template_key_pattern"/>
- <result property="createdAt" column="template_created_at"/>
- <result property="updatedAt" column="template_updated_at"/>
- <collection property="usersPermissions" ofType="PermissionTemplateUser">
- <id property="id" column="permission_template_user_id"/>
- <result property="userId" column="user_id"/>
- <result property="permission" column="user_permission"/>
- <result property="userName" column="user_name"/>
- <result property="userLogin" column="user_login"/>
- </collection>
- <collection property="groupsPermissions" ofType="PermissionTemplateGroup">
- <id property="id" column="permission_template_group_id"/>
- <result property="groupId" column="group_id"/>
- <result property="permission" column="group_permission"/>
- <result property="groupName" column="group_name"/>
- </collection>
- </resultMap>
-
- </mapper>
|