github.com/christoph-karpowicz/db_mediator@v0.0.0-20210207102849-61a28a1071d8/internal/server/cfg/db_cfg.go (about)

     1  package cfg
     2  
     3  import (
     4  	validationUtil "github.com/christoph-karpowicz/db_mediator/internal/util/validation"
     5  )
     6  
     7  var dbNullableFields = []string{"alias"}
     8  
     9  // DbConfigArray is an array of YAML database configs.
    10  type DbConfigArray struct {
    11  	Databases []DbConfig
    12  }
    13  
    14  // DbConfig represents an individual YAML database config.
    15  type DbConfig struct {
    16  	Name     string `yaml:"name"`
    17  	Alias    string `yaml:"alias"`
    18  	Type     string `yaml:"type"`
    19  	Host     string `yaml:"host"`
    20  	Port     int    `yaml:"port"`
    21  	User     string `yaml:"user"`
    22  	Password string `yaml:"password"`
    23  }
    24  
    25  // GetName returns the DB's name if an alias hasn't been provided.
    26  func (d *DbConfig) GetName() string {
    27  	if d.Alias != "" {
    28  		return d.Alias
    29  	}
    30  	return d.Name
    31  }
    32  
    33  // Validate calls a validation function on itself.
    34  func (d *DbConfigArray) Validate() {
    35  	for _, dbCfg := range d.Databases {
    36  		validationUtil.YAMLStruct(dbCfg, dbNullableFields)
    37  	}
    38  }
    39  
    40  // GetDbConfigs loads the database configs from databases.yaml file.
    41  func GetDbConfigs() *DbConfigArray {
    42  	var dbDataArr DbConfigArray = DbConfigArray{}
    43  	ImportYAMLFile(&dbDataArr, "./config/databases.yaml")
    44  	return &dbDataArr
    45  }