d7ad4108a7
This concludes all the code needed to connect to the DB and beacon node. We will no longer reference the lighthouse client because this application should work interchangeably with any beacon node. I have also standardized logging.
73 lines
1.8 KiB
Go
73 lines
1.8 KiB
Go
package postgres
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
"time"
|
|
)
|
|
|
|
// DriverType to explicitly type the kind of sql driver we are using
|
|
type DriverType string
|
|
|
|
const (
|
|
PGX DriverType = "PGX"
|
|
SQLX DriverType = "SQLX"
|
|
Unknown DriverType = "Unknown"
|
|
)
|
|
|
|
// DefaultConfig are default parameters for connecting to a Postgres sql
|
|
var DefaultConfig = Config{
|
|
Hostname: "localhost",
|
|
Port: 8077,
|
|
DatabaseName: "vulcanize_testing",
|
|
Username: "vdbm",
|
|
Password: "password",
|
|
Driver: "PGX",
|
|
}
|
|
|
|
// ResolveDriverType resolves a DriverType from a provided string
|
|
func ResolveDriverType(str string) (DriverType, error) {
|
|
switch strings.ToLower(str) {
|
|
case "pgx", "pgxpool":
|
|
return PGX, nil
|
|
case "sqlx":
|
|
return SQLX, nil
|
|
default:
|
|
return Unknown, fmt.Errorf("unrecognized driver type string: %s", str)
|
|
}
|
|
}
|
|
|
|
// Config holds params for a Postgres db
|
|
type Config struct {
|
|
// conn string params
|
|
Hostname string
|
|
Port int
|
|
DatabaseName string
|
|
Username string
|
|
Password string
|
|
|
|
// conn settings
|
|
MaxConns int
|
|
MaxIdle int
|
|
MinConns int
|
|
MaxConnIdleTime time.Duration
|
|
MaxConnLifetime time.Duration
|
|
ConnTimeout time.Duration
|
|
|
|
// driver type
|
|
Driver DriverType
|
|
}
|
|
|
|
// DbConnectionString constructs and returns the connection string from the config
|
|
func (c Config) DbConnectionString() string {
|
|
if len(c.Username) > 0 && len(c.Password) > 0 {
|
|
return fmt.Sprintf("postgresql://%s:%s@%s:%d/%s?sslmode=disable",
|
|
c.Username, c.Password, c.Hostname, c.Port, c.DatabaseName)
|
|
}
|
|
if len(c.Username) > 0 && len(c.Password) == 0 {
|
|
return fmt.Sprintf("postgresql://%s@%s:%d/%s?sslmode=disable",
|
|
c.Username, c.Hostname, c.Port, c.DatabaseName)
|
|
}
|
|
return fmt.Sprintf("postgresql://%s:%d/%s?sslmode=disable", c.Hostname, c.Port, c.DatabaseName)
|
|
}
|