package common

import (
	"fmt"
	"github.com/pkg/errors"
	"gopkg.in/yaml.v3"
	"io/ioutil"
)

type conf struct {
	Name     string `yaml:"name"`
	Password string `yaml:"password"`
	Host     string `yaml:"host"`
	Port     string `yaml:"port"`
	Database string `yaml:"database"`
}

func GetConfig() (dbconf conf, err error) {
	dbconf = conf{}
	yamlfile, err := ioutil.ReadFile("./config/config.yml")
	if err != nil {
		return dbconf, errors.Wrap(err, "ERR: fail to read file")
	}
	err = yaml.Unmarshal(yamlfile, &dbconf)
	if err != nil {
		return dbconf, errors.Wrap(err, "ERR: fail to parse yaml")
	}
	return
}

func getDSN() (dsn string, err error) {
	config, err := GetConfig()
	if err != nil {
		return
	}
	root := config.Name
	password := config.Password
	host := config.Host
	port := config.Port
	database := config.Database
	dsn = fmt.Sprintf("%v:%v@tcp(%v:%v)/%v?charset=utf8mb4&parseTime=True&loc=Local", root, password, host, port, database)
	return
}