package main import ( "fmt" "github.com/jmoiron/sqlx" _ "github.com/lib/pq" "os" ) func envMustExist(env string) string { if value, exists := os.LookupEnv(env); !exists { panic(fmt.Sprintf("env variable '%s' not defined", env)) } else { return value } } func connectToDb() (*sqlx.DB, error) { host := envMustExist("PSQL_HOST") port := envMustExist("PSQL_PORT") user := envMustExist("PSQL_USER") password := envMustExist("PSQL_PASSWORD") dbname := envMustExist("PSQL_DB") psqlInfo := fmt.Sprintf("host=%s port=%s user=%s password=%s dbname=%s sslmode=disable", host, port, user, password, dbname) db, err := sqlx.Open("postgres", psqlInfo) if err != nil { return nil, err } err = db.Ping() if err != nil { return nil, err } return db, nil }