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 }