github.com/christoph-karpowicz/db_mediator@v0.0.0-20210207102849-61a28a1071d8/internal/server/db/databases.go (about) 1 /* 2 Package db contains database configurations and 3 methods for querying. 4 */ 5 package db 6 7 import ( 8 "github.com/christoph-karpowicz/db_mediator/internal/server/cfg" 9 ) 10 11 // Databases imports, validates and holds information about databases from JSON config files. 12 type Databases map[string]*Database 13 14 func (d *Databases) Init() { 15 dbCfgs := d.getConfigs() 16 d.validateConfigs(dbCfgs) 17 } 18 19 func (d *Databases) getConfigs() *cfg.DbConfigArray { 20 var dbCfgs *cfg.DbConfigArray = cfg.GetDbConfigs() 21 22 for i := 0; i < len(dbCfgs.Databases); i++ { 23 var database Database 24 25 // fmt.Println(dbCfgs.Databases[i].Type) 26 switch dbType := dbCfgs.Databases[i].Type; dbType { 27 case "mongo": 28 database = &mongoDatabase{cfg: &dbCfgs.Databases[i]} 29 case "postgres": 30 database = &postgresDatabase{cfg: &dbCfgs.Databases[i]} 31 default: 32 database = nil 33 } 34 35 (*d)[dbCfgs.Databases[i].GetName()] = &database 36 // fmt.Printf("val: %s\n", dbDataArr.Databases[i].Name) 37 } 38 39 return dbCfgs 40 } 41 42 // validateConfigs calls validation method on each database data object. 43 func (d *Databases) validateConfigs(dbCfgs *cfg.DbConfigArray) { 44 dbCfgs.Validate() 45 }