package cn.fateverse.query.handler.engine;

import cn.fateverse.common.code.model.EngineResult;
import cn.fateverse.query.entity.DataAdapter;

public interface EngineExecuteHandler {


    /**
     * 执行方法
     *
     * @param dataAdapter 数据适配器
     * @param data        数据列表
     * @return JSONObject对象
     */
    Object execute(DataAdapter dataAdapter, Object data);

    /**
     * 模拟执行方法
     *
     * @param dataAdapter 数据适配器
     * @param data        数据列表
     * @return JSONObject对象
     */
    EngineResult mockExecute(DataAdapter dataAdapter, Object data);

    /**
     * 预处理数据适配器
     *
     * @param dataAdapter 数据适配器
     */
    Boolean preconditioning(DataAdapter dataAdapter);


    /**
     * 删除数据适配器
     *
     * @param dataAdapter 数据适配器
     * @return 删除结果
     */
    Boolean remove(DataAdapter dataAdapter);

}
