/*
 * Copyright (c) 京北方信息技术股份有限公司 Corporation 2022 . All rights reserved.
 *
 */
package net.northking.cctp.platform.api.comlibrary.service;

import net.northking.cctp.common.db.Pagination;
import net.northking.cctp.common.http.QueryByPage;
import net.northking.cctp.platform.dto.comlibrary.*;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * 平台组件库Restful逻辑接口
 *
 * @author maven-cctp-plugin
 * @since 1.0
 */
public interface CpComponentLibraryApiService {
    /**
     * 查询平台组件库列表
     *
     * @param queryByPage 查询条件
     * @return 查询结果列表
     */
    Pagination<CpComponentLibraryDetailDto> pagingQuery(QueryByPage<CpComponentLibraryQueryDto> queryByPage);

    /**
     * 查询组件库详情
     *
     * @param uuid
     * @return
     */
    CpComponentLibraryDetailDto findByPK(String uuid);

    /**
     * 根据名称查询组件库信息
     * @param target
     * @return
     */
    CpComponentLibraryDetailDto getLibInfoByName(CpComponentLibraryAddDto target);

    /**
     * 更新平台组件库
     *
     * @param dto 接口数据传输对象
     * @return 修改的记录数量
     */
    Integer updateByPK(CpComponentLibraryUpdateDto dto) throws IllegalAccessException;

    /**
     * 删除组件库
     *
     * @param uuid
     * @return
     */
    Integer deleteByPK(String uuid);

    CpComponentLibraryAddDto importComponentLibrary(MultipartFile file);

    String updateLibrary(CpComponentLibraryAddDto fileId);

    List<CpComLibraryTree> getLibraryTree(CpComponentLibraryQueryDto query);

    List<CpComLibraryTree> selectByLike(CpComponentLibraryQueryDto query);

    void downloadLibFile(HttpServletResponse response, String libId);

    List<CpComponentLibraryDetailDto> getLibListByEngine(CpComLibListEngineDto query);
}
