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  }