package com.zm.order.tool.server.stream.convert;

/**
 * 数据流转换器
 *
 * <p>
 *
 * </p>
 *
 * @author nianchang
 * @date 2023/03/07 3:15 下午
 */
public interface DataStreamConverter {

    /**
     * 接口路由获取指定转换器
     *
     * <p>
     *      新增接口需要进行参数转换时，需要先通过路由编排枚举添加实现
     * </p>
     *
     *
     */
    Integer route();

    /**
     * 请求参数转换器
     *
     * <p>
     *     请求参数转换注意事项：
     *     1、多层级参数映射
     *     2、查询接口List多参数场景兼容
     * </p>
     *
     * @param data original data
     *
     * @return interface request
     */
    Object streamIn(Object data);

    /**
     * 响应参数转换器
     *
     * <p>
     *     响应参数转换注意事项：
     *     1、参数层级较深，注意参数拆解
     * </p>
     *
     * @param data original data
     *
     * @return interface response
     */
    Object streamOut(Object data);
}
