package com.ruoyi.project.system.mapper;

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

import com.ruoyi.project.system.domain.TbFormModule;
import io.lettuce.core.dynamic.annotation.Param;

/**
 * 组件类型Mapper接口
 *
 * @author ruoyi
 * @date 2020-06-17
 */
public interface TbFormModuleMapper
{

    /**
     * 动态修改表数据
     * @param tableName 表名
     * @param tableMap 需要修改的数据
     * @param id 数据的主键id
     * @return 受影响行数
     */
    public int updateTableData(@Param("tableName") String tableName,@Param("tableMap") Map tableMap,@Param("id") String id);
    /**
     * 动态插入表数据
     * @param tableName 表名
     * @param tableMap 需要插入的数据map
     * @return 受影响行数
     */
    public int insertTableData(@Param("tableName") String tableName,@Param("tableMap") LinkedHashMap tableMap);

    public int insertTable(@Param("tableName") String tableName,@Param("vModel")   String vModel ,@Param("defaultValue")  String defaultValue);
    /**
     * 根据id动态删除表数据
     * @param tableName 表名
     * @param id 信息id
     * @return 状态
     */
    public int deleteTableData(@Param("tableName") String tableName,@Param("id") Long id);

    /**
     * 根据表名动态查询表数据
     * @param tableName 表名
     * @return 表信息
     */
    public List<Map> selectTableData(String tableName);

    /**
     * 根据表名查询对应表结构
     * @param tableName 表名
     * @return 表结构
     */
    public List<TbFormModule> selTbDataByName(String tableName);
    /**
     * 查询组件类型
     *
     * @param id 组件类型ID
     * @return 组件类型
     */
    public TbFormModule selectTbFormModuleById(Long id);

    /**
     * 查询组件类型列表
     *
     * @param tbFormModule 组件类型
     * @return 组件类型集合
     */
    public List<TbFormModule> selectTbFormModuleList(TbFormModule tbFormModule);

    /**
     * 新增组件类型
     *
     * @param tbFormModule 组件类型
     * @return 结果
     */
    public int insertTbFormModule(TbFormModule tbFormModule);

    /**
     * 修改组件类型
     *
     * @param tbFormModule 组件类型
     * @return 结果
     */
    public int updateTbFormModule(TbFormModule tbFormModule);

    /**
     * 删除组件类型
     *
     * @param id 组件类型ID
     * @return 结果
     */
    public int deleteTbFormModuleById(Long id);

    /**
     * 批量删除组件类型
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteTbFormModuleByIds(String[] action);

    /**
     * 根据表名删除组件信息
     * @param formId 表名
     * @return
     */
    int deleteTableZJ(String formId);
}
