package config

import (
	"os"

	"github.com/pelletier/go-toml/v2"
)

/**
 * @brief Структура конфигурации приложения
 */
type Config struct {
	App struct {
		Name             string `toml:"name"`
		MaxLoginAttempts int    `toml:"max_login_attempts"`
		LockTimeoutSec   int    `toml:"lock_timeout_sec"`
	} `toml:"app"`

	Database struct {
		Type string `toml:"type"`
		Path string `toml:"path"`
	} `toml:"database"`

	Security struct {
		PasswordHash string `toml:"password_hash"`
	} `toml:"security"`

	UI struct {
		ShowWelcome bool `toml:"show_welcome"`
	} `toml:"ui"`
}

/**
 * @brief Загрузка конфигурации из TOML файла
 *
 * @param path путь к файлу конфигурации
 * @return cfg указатель на структуру Config
 * @return error ошибка при загрузке
 */
func Load(path string) (*Config, error) {
	data, err := os.ReadFile(path)
	if err != nil {
		return nil, err
	}

	var cfg Config
	err = toml.Unmarshal(data, &cfg)
	if err != nil {
		return nil, err
	}

	return &cfg, nil
}
