/*

 Copyright (c) [2023] [pcm]
 [pcm-coordinator] is licensed under Mulan PSL v2.
 You can use this software according to the terms and conditions of the Mulan PSL v2.
 You may obtain a copy of Mulan PSL v2 at:
          http://license.coscl.org.cn/MulanPSL2
 THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
 EITHER EXPaRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
 MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
 See the Mulan PSL v2 for more details.

*/

package config

import (
	"github.com/zeromicro/go-zero/core/logx"
	"github.com/zeromicro/go-zero/core/stores/redis"
	"github.com/zeromicro/go-zero/rest"
	"github.com/zeromicro/go-zero/zrpc"
)

type Config struct {
	rest.RestConf
	DB struct {
		DataSource string
	}
	Redis               redis.RedisConf
	LogConf             logx.LogConf
	K8sNativeConf       zrpc.RpcClientConf
	ACRpcConf           zrpc.RpcClientConf
	THRpcConf           zrpc.RpcClientConf
	ModelArtsRpcConf    zrpc.RpcClientConf
	ModelArtsImgRpcConf zrpc.RpcClientConf
	OpenstackRpcConf    zrpc.RpcClientConf
	OctopusRpcConf      zrpc.RpcClientConf
	PcmCoreRpcConf      zrpc.RpcClientConf
	BlockChain          struct {
		ContractAddress string
		FunctionName    string
		Url             string
		Type            string
	}

	MinioConf struct {
		Secret    string
		AccessKey string
		Endpoint  string
	}

	SnowflakeConf SnowflakeConf
	Monitoring    Monitoring

	JcsMiddleware JcsMiddleware

	Participant Participant
}
type Monitoring struct {
	PromUrl  string
	AlertUrl string
}

// SnowflakeConf 雪花算法机器id配置
type SnowflakeConf struct {
	MachineId int64 `json:"machineId"`
}

type JcsMiddleware struct {
	JobStatusReportUrl string
}

type Participant struct {
	AdapterId      string
	CloudAdapterId string
}
