cranberry
1package config
2
3import (
4"io/ioutil"
5"log"
6
7"gopkg.in/yaml.v2"
8)
9
10// GRPCConfig содержит настройки для gRPC сервиса
11type GRPCConfig struct {
12Host string `yaml:"host"`
13Port int `yaml:"port"`
14}
15
16// DBConfig содержит настройки для базы данных
17type DBConfig struct {
18Host string `yaml:"host"`
19Port int `yaml:"port"`
20Login string `yaml:"login"`
21Password string `yaml:"password"`
22SqlPath string `yaml:"sql_path"`
23}
24
25type Genesis struct {
26Addr string `yaml:"addr"`
27Balance uint64 `yaml:"balance"`
28}
29
30// AppConfig объединяет все настройки приложения
31type Config struct {
32GRPC GRPCConfig `yaml:"grpc"`
33DB DBConfig `yaml:"db"`
34Genesis Genesis `yaml:"genesis"`
35Validator Validator `yaml:"validator"`
36Peers []string `yaml:"peers"`
37}
38
39type Validator struct {
40Seed string `yaml:"seed"`
41}
42
43func ReadConfig(path string) *Config {
44data, err := ioutil.ReadFile(path)
45if err != nil {
46log.Fatalf("error reading config file: %v", err)
47}
48
49// Создаем объект для хранения данных
50var config Config
51
52// Парсим YAML
53err = yaml.Unmarshal(data, &config)
54if err != nil {
55log.Fatalf("error parsing YAML: %v", err)
56}
57return &config
58}
59