package com.yunzhupaas.base.service;

import com.yunzhupaas.base.entity.VisualdevEntity;
import com.yunzhupaas.base.model.PaginationVisualdev;
import com.yunzhupaas.exception.WorkFlowException;
import com.yunzhupaas.model.visualJson.TableFields;

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

/**
 * @author 云筑产品开发平台组
 * @version V3.1.0
 * @copyright 深圳市乐程软件有限公司（http://www.szlecheng.cn）
 * @date 2024/3/16
 */
public interface VisualdevService extends SuperService<VisualdevEntity> {

    List<VisualdevEntity> getList(PaginationVisualdev paginationVisualdev);

    List<VisualdevEntity> getPageList(PaginationVisualdev paginationVisualdev);

    List<VisualdevEntity> getList();

    VisualdevEntity getInfo(String id);

    /**
     * 获取已发布的版本, 若未发布获取当前版本
     *
     * @param id
     * @return
     */
    VisualdevEntity getReleaseInfo(String id);

    /**
     * 获取动态设计子表名和实际库表名的对应
     *
     * @param formData
     * @return
     */
    Map<String, String> getTableMap(String formData);

    Boolean create(VisualdevEntity entity);

    boolean update(String id, VisualdevEntity entity) throws Exception;

    /**
     * 根据encode判断是否有相同值
     *
     * @param encode
     * @return
     */
    Integer getObjByEncode(String encode, Integer type);

    /**
     * 根据name判断是否有相同值
     *
     * @param name
     * @return
     */
    Integer getCountByName(String name, Integer type);

    /**
     * 无表生成有表
     *
     * @param entity
     */
    void createTable(VisualdevEntity entity) throws WorkFlowException;

    Boolean getPrimaryDbField(String linkId, String table) throws Exception;

    List<VisualdevEntity> selectorList();

    /**
     * 获取关联表单字段列表
     *
     * @param entity
     */
    List<TableFields> storedFieldList(VisualdevEntity entity);
}

