package config

import (
	"git.apinb.com/bsm-sdk/core/conf"
)

var (
	Spec SrvConfig
)

type SrvConfig struct {
	conf.Base `yaml:",inline"`
	Databases *conf.DBConf            `yaml:"Databases"` // 数据库配置
	Rpc       map[string]conf.RpcConf `yaml:"Rpc"`       // RPC配置
	Apm       *conf.ApmConf           `yaml:"APM"`       // APM配置
	Etcd      *conf.EtcdConf          `yaml:"Etcd"`      // ETCD配置
	MinioOss  *conf.OssConf           `yaml:"MinioOss"`  // OSS配置
	Local     *LocalConf              `yaml:"Local"`     // 本地文件配置
	FtsConfig *ftsConf                `yaml:"FtsConfig"` // FTS配置
}

type ftsConf struct {
	MaxSize  int64    `yaml:"MaxSize"`  // 上传文件大小限制
	InputKey string   `yaml:"InputKey"` // 上传文件名
	Allows   []string `yaml:"Allows"`   // 允许上传的文件类型
}
type LocalConf struct {
	Site      string `yaml:"Site"`      // 站点HOST
	UploadDir string `yaml:"UploadDir"` //本地上传文件夹
}

func New(srvKey string) {
	// 初始化配置 创建一个新的配置实例，用于服务配置
	conf.New(srvKey, &Spec)

	// 配置校验 服务端口如果不合规，则随机分配端口
	Spec.Port = conf.CheckPort(Spec.Port)

	// 配置校验 服务名称地址及监听地址不能为空
	conf.NotNil(Spec.Service, Spec.Cache)
}
