package com.ruoyi.generator.service;


import com.ruoyi.generator.domain.GenProject;

import java.util.List;
import java.util.Map;

/**
 * 项目表 服务层
 * 
 * @author ruoyi
 */
public interface IGenProjectService 
{
    /**
     * 查询项目信息
     * 
     * @param projectId 项目ID
     * @return 项目信息
     */
    public GenProject selectGenProjectById(Long projectId);

    /**
     * 查询项目列表
     * 
     * @param genProject 项目信息
     * @return 项目集合
     */
    public List<GenProject> selectGenProjectList(GenProject genProject);

    /**
     * 新增项目
     * 
     * @param genProject 项目信息
     * @return 结果
     */
    public int insertGenProject(GenProject genProject);

    /**
     * 修改项目
     * 
     * @param genProject 项目信息
     * @return 结果
     */
    public int updateGenProject(GenProject genProject);

    /**
     * 删除项目信息
     * 
     * @param projectId 项目ID
     * @return 结果
     */
    public int deleteGenProjectById(Long projectId);

    /**
     * 批量删除项目信息
     * 
     * @param projectIds 需要删除的项目ID
     * @return 结果
     */
    public int deleteGenProjectByIds(Long[] projectIds);

    /**
     * 获取项目结构
     *
     * @param projectId 项目ID
     * @return 项目结构
     */
    public List<Map<String, Object>> getProjectStructure(Long projectId, String type);

    public List<Map<String, Object>> getProjectStructure(GenProject project, String type);

    /**
     * 预览代码
     *
     * @param tableId 表编号
     * @return 预览数据列表
     */
    public Map<String, String> previewCode(Long projectId, Long tableId, String keyword, String type);

    public Map<String, String> previewCode(GenProject project, Long tableId, String keyword, String type);

    /**
     * 下载项目结构
     *
     * @param projectId 项目ID
     * @return 项目结构ZIP文件字节数组
     */
    public byte[] downloadStructure(Long projectId, String type);

    public byte[] downloadStructure(GenProject project, String type);
}
