<?xml version="1.0" encoding="UTF-8"?>
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
<mapper namespace="jnpf.dmsMapper.DmsFilePermissionMapper">
|
<resultMap id="Permission" type="jnpf.dmsEntity.permission.entity.DmsFilePermissionEntity">
|
<id column="id" property="id" typeHandler="jnpf.dmsDatabase.DmsUuidTypeHandler"/>
|
<result column="tenant_id" property="tenantId"/>
|
<result column="resource_type" property="resourceType"/>
|
<result column="resource_id" property="resourceId" typeHandler="jnpf.dmsDatabase.DmsUuidTypeHandler"/>
|
<result column="resource_scope" property="resourceScope"/>
|
<result column="principal_type" property="principalType"/>
|
<result column="principal_id" property="principalId"/>
|
<result column="include_child_orgs" property="includeChildOrgs"/>
|
<result column="approved_org_scope" property="approvedOrgScope"/>
|
<result column="action_code" property="actionCode"/>
|
<result column="source_type" property="sourceType"/>
|
<result column="source_id" property="sourceId"/>
|
<result column="valid_from" property="validFrom"/>
|
<result column="valid_to" property="validTo"/>
|
<result column="max_use_count" property="maxUseCount"/>
|
<result column="used_count" property="usedCount"/>
|
<result column="grant_reason" property="grantReason"/>
|
<result column="granted_by_type" property="grantedByType"/>
|
<result column="granted_by_id" property="grantedById"/>
|
<result column="revoked_at" property="revokedAt"/>
|
<result column="revoked_by_type" property="revokedByType"/>
|
<result column="revoked_by_id" property="revokedById"/>
|
<result column="revoke_reason" property="revokeReason"/>
|
<result column="revision" property="revision"/>
|
<result column="created_at" property="createdAt"/>
|
<result column="updated_at" property="updatedAt"/>
|
</resultMap>
|
<sql id="Columns">id, tenant_id, resource_type, resource_id, resource_scope, principal_type, principal_id, include_child_orgs, approved_org_scope, action_code, source_type, source_id, valid_from, valid_to, max_use_count, used_count, grant_reason, granted_by_type, granted_by_id, revoked_at, revoked_by_type, revoked_by_id, revoke_reason, revision, created_at, updated_at</sql>
|
<select id="selectCandidates" resultMap="Permission">
|
SELECT <include refid="Columns"/> FROM public.dms_file_permissions
|
WHERE tenant_id = #{tenantId} AND action_code IN
|
<foreach collection="actionCodes" item="action" open="(" separator="," close=")">#{action}</foreach>
|
AND revoked_at IS NULL AND valid_from <= CURRENT_TIMESTAMP
|
AND (valid_to IS NULL OR CURRENT_TIMESTAMP < valid_to)
|
AND (max_use_count IS NULL OR used_count < max_use_count)
|
AND resource_id IN
|
<foreach collection="resourceIds" item="id" open="(" separator="," close=")">#{id,jdbcType=OTHER,typeHandler=jnpf.dmsDatabase.DmsUuidTypeHandler}</foreach>
|
ORDER BY CASE WHEN max_use_count IS NULL THEN 0 ELSE 1 END,
|
CASE WHEN max_use_count IS NOT NULL THEN valid_to END ASC NULLS LAST, created_at, id
|
</select>
|
<select id="selectByTenantAndId" resultMap="Permission">
|
SELECT <include refid="Columns"/> FROM public.dms_file_permissions WHERE tenant_id = #{tenantId} AND id = #{id,jdbcType=OTHER,typeHandler=jnpf.dmsDatabase.DmsUuidTypeHandler}
|
</select>
|
<select id="selectByTenantAndIdForUpdate" resultMap="Permission">
|
SELECT <include refid="Columns"/> FROM public.dms_file_permissions WHERE tenant_id = #{tenantId} AND id = #{id,jdbcType=OTHER,typeHandler=jnpf.dmsDatabase.DmsUuidTypeHandler} FOR UPDATE
|
</select>
|
</mapper>
|