from dataclasses import dataclass, asdict


@dataclass
class DatasetConfigParams:
    """
    数据集配置
    """
    sourceType: int = 0  # 1-csv 9-语义模型
    dataSourceAddress: str = None  # csv下载地址
    inputAddr: str = None  # 获取数据接口
    inputGetrowAddr: str = None  # 获取数据接口
    inputDataMetaAddr: str = None  # 获取字段名接口
    inputModelId: str = None  # 语义模型id
    tenantId: str = None  # 租户id
    tableId: str = None  # 表id
    tableName: str = None  # 表名
    inputDataSourceId: str = None  # 数据工场表id
    userId: str = None  # 用户id
    stream: bool = False  # 流式标志位

@dataclass
class DatasetConfig:
     '''
     数据集配置
     '''
     SOURCE_TYPE: int = 0
     DATA_SOURCE_ADDRESS: str = None  # csv下载地址
     INPUT_ADDR: str = None  # 获取数据接口
     INPUT_GETROW_ADDR: str = None  # 获取数据接口
     INPUT_DATA_META_ADDR: str = None  # 获取字段名接口
     INPUT_MODEL_ID: str = None  # 语义模型id
     TENANT_ID: str = None  # 租户id
     TABLE_ID: str = None  # 表id
     TABLE_NAME: str = None  # 表名
     INPUT_DATA_SOURCE_ID: str = None  # 数据工场表id
     USER_ID: str = None  # 用户id
     STREAM: bool = False  # 流式标志位


def convert(dataset_config_params: DatasetConfigParams) -> DatasetConfig:
    """
    转换数据集配置参数为数据集配置对象
    驼峰格式转下划线格式
    """
    return DatasetConfig(
        SOURCE_TYPE=dataset_config_params.sourceType,
        DATA_SOURCE_ADDRESS=dataset_config_params.dataSourceAddress,
        INPUT_ADDR=dataset_config_params.inputAddr,
        INPUT_GETROW_ADDR=dataset_config_params.inputGetrowAddr,
        INPUT_DATA_META_ADDR=dataset_config_params.inputDataMetaAddr,
        INPUT_MODEL_ID=dataset_config_params.inputModelId,
        TENANT_ID=dataset_config_params.tenantId,
        TABLE_ID=dataset_config_params.tableId,
        TABLE_NAME=dataset_config_params.tableName,
        INPUT_DATA_SOURCE_ID=dataset_config_params.inputDataSourceId,
        USER_ID=dataset_config_params.userId,
        STREAM=dataset_config_params.stream
    )
    
    