package jnpf.dmsMapper;
|
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import jnpf.dmsEntity.permission.entity.DmsFolderEntity;
|
import jnpf.dmsEntity.permission.model.DmsFolderAncestorRow;
|
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Select;
|
|
import java.util.List;
|
import java.util.UUID;
|
|
@Mapper
|
public interface DmsFolderMapper extends BaseMapper<DmsFolderEntity> {
|
@Select("SELECT id, tenant_id, parent_id, name, created_by, created_at "
|
+ "FROM public.dms_folders WHERE tenant_id = #{tenantId} AND id = #{id}")
|
DmsFolderEntity selectByTenantAndId(@Param("tenantId") String tenantId, @Param("id") UUID id);
|
|
@Select({"<script>",
|
"SELECT id, tenant_id, parent_id, name, created_by, created_at",
|
"FROM public.dms_folders WHERE tenant_id = #{tenantId} AND id IN",
|
"<foreach collection='ids' item='id' open='(' separator=',' close=')'>#{id}</foreach>",
|
"</script>"})
|
List<DmsFolderEntity> selectByTenantAndIds(@Param("tenantId") String tenantId,
|
@Param("ids") List<UUID> ids);
|
|
@Select({"<script>",
|
"WITH RECURSIVE ancestors(start_folder_id, ancestor_folder_id, parent_id, depth) AS (",
|
"SELECT f.id, f.id, f.parent_id, 0 FROM public.dms_folders f",
|
"WHERE f.tenant_id = #{tenantId} AND f.id IN",
|
"<foreach collection='folderIds' item='id' open='(' separator=',' close=')'>#{id}</foreach>",
|
"UNION ALL",
|
"SELECT a.start_folder_id, p.id, p.parent_id, a.depth + 1",
|
"FROM ancestors a JOIN public.dms_folders p",
|
"ON p.tenant_id = #{tenantId} AND p.id = a.parent_id",
|
")",
|
"SELECT start_folder_id, ancestor_folder_id, depth FROM ancestors",
|
"ORDER BY start_folder_id, depth",
|
"</script>"})
|
List<DmsFolderAncestorRow> selectAncestorRows(@Param("tenantId") String tenantId,
|
@Param("folderIds") List<UUID> folderIds);
|
}
|