package config

import (
	"os"

	"gopkg.in/yaml.v3"

	"github.com/pingcap-inc/clinic/pkg/config"
)

var globalCfg *Config

func GetConfig() *Config {
	return globalCfg
}

type Config struct {
	ClinicDBConfig  *config.DBConfig `yaml:"clinic-db"`
	FeishuAPIConfig FeishuAPIConfig  `yaml:"feishu-api"`
}

type ClinicConfig struct {
	Endpoint string `yaml:"endpoint"` // should include scheme
	Key      string `yaml:"key"`
}

type FeishuAPIConfig struct {
	AppID     string `yaml:"app-id"`
	AppSecret string `yaml:"app-secret"`
}

func InitConfig(cfgPath string) (*Config, error) {
	b, err := os.ReadFile(cfgPath)
	if err != nil {
		return nil, err
	}
	cfg, err := initConfig(b)
	if err != nil {
		return nil, err
	}
	globalCfg = cfg
	return cfg, nil
}

func initConfig(body []byte) (*Config, error) {
	var cfg Config
	err := yaml.Unmarshal(body, &cfg)
	if err != nil {
		return nil, err
	}
	return &cfg, nil
}
