package com.xvji.domain;

import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.TypeReference;
import lombok.Data;
import java.util.Map;

/**
 * 组件表实体类（对应component表）
 */
@Data
public class Component {
    /**
     * 组件ID
     */
    private Long componentId;

    /**
     * 任务ID：关联训练/预测任务表
     */
    private Long taskId;

    /**
     * 任务类型：0-训练任务，1-预测任务
     */
    private Integer taskType;

    /**
     * 组件类型（如数据获取）
     */
    private String componentType;

    /**
     * 参数：包含多对键值对的JSON对象
     */
    private String params;  // 用String存储JSON字符串，兼容所有JSON格式

    /**
     * 接口地址
     */
    private String interfaceUrl;

    /**
     * 将JSON字符串参数转换为Map（方便操作键值对）
     */
    public Map<String, Object> getParamsMap() {
        if (params == null || params.trim().isEmpty()) {
            return null;
        }
        // 使用fastjson解析JSON字符串为Map
        return JSON.parseObject(params, new TypeReference<Map<String, Object>>() {});
    }

    /**
     * 将Map转换为JSON字符串（用于存储到数据库）
     */
    public void setParamsMap(Map<String, Object> paramsMap) {
        if (paramsMap == null || paramsMap.isEmpty()) {
            this.params = null;
            return;
        }
        // 使用fastjson将Map序列化为JSON字符串
        this.params = JSON.toJSONString(paramsMap);
    }
}
