in profiles/source_profile.go [245:295]
func (spd *SourceProfileDialectImpl) NewSourceProfileConnectionPostgreSQL(params map[string]string, g utils.GetUtilInfoInterface) (SourceProfileConnectionPostgreSQL, error) {
pg := SourceProfileConnectionPostgreSQL{}
host, hostOk := params["host"]
user, userOk := params["user"]
db, dbOk := params["dbName"]
port, portOk := params["port"]
pwd, pwdOk := params["password"]
streamingConfig, cfgOk := params["streamingCfg"]
if cfgOk && streamingConfig == "" {
return pg, fmt.Errorf("specify a non-empty streaming config file path")
}
pg.StreamingConfig = streamingConfig
// We don't users to mix and match params from source-profile and environment variables.
// We either try to get all params from the source-profile and if none are set, we read from the env variables.
if !(hostOk || userOk || dbOk || portOk || pwdOk) {
// No connection params provided through source-profile. Fetching from env variables.
fmt.Printf("Connection parameters not specified in source-profile. Reading from " +
"environment variables PGHOST, PGUSER, PGDATABASE, PGPORT, PGPASSWORD...\n")
pg.Host = os.Getenv("PGHOST")
pg.User = os.Getenv("PGUSER")
pg.Db = os.Getenv("PGDATABASE")
pg.Port = os.Getenv("PGPORT")
pg.Pwd = os.Getenv("PGPASSWORD")
// Throw error if the input entered is empty.
if pg.Host == "" || pg.User == "" || pg.Db == "" {
return pg, fmt.Errorf("found empty string for PGHOST/PGUSER/PGDATABASE. Please specify these environment variables with correct values")
}
} else if hostOk && userOk && dbOk {
// All connection params provided through source-profile. Port and password handled later.
pg.Host, pg.User, pg.Db, pg.Port, pg.Pwd = host, user, db, port, pwd
// Throw error if the input entered is empty.
if pg.Host == "" || pg.User == "" || pg.Db == "" {
return pg, fmt.Errorf("found empty string for host/user/dbName. Please specify host, port, user and dbName in the source-profile")
}
} else {
// Partial params provided through source-profile. Ask user to provide all through the source-profile.
return pg, fmt.Errorf("please specify host, port, user and dbName in the source-profile")
}
if pg.Port == "" {
// Set default port for postgresql, which rarely changes.
pg.Port = "5432"
}
if pg.Pwd == "" {
pg.Pwd = g.GetPassword()
}
return pg, nil
}