Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@Goodnessuc
Last active September 9, 2022 18:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Goodnessuc/6f46d821c216e65f7615d95b9f519028 to your computer and use it in GitHub Desktop.
Save Goodnessuc/6f46d821c216e65f7615d95b9f519028 to your computer and use it in GitHub Desktop.
package main
import (
"fmt"
"gorm.io/driver/postgres"
"gorm.io/gorm"
"log"
"os"
)
// Config export Name=blah, use os package not dependencies for loading env variables
type Config struct {
Host string // localhost
Port string //5432
Password string //goodnessucJoggler
User string //goodnessuc
DBName string //Joggle
SSLMode string
}
//https://hasura.io/learn/database/postgresql/installation/postgresql-connection-string/
func NewConnection() (*gorm.DB, error) {
configurations := Config{
Host: os.Getenv("database_Host"),
Port: os.Getenv("database_Port"),
Password: os.Getenv("database_Password"),
User: os.Getenv("database_User"),
DBName: os.Getenv("database_Name"),
SSLMode: "",
}
dsn := fmt.Sprintf("host=%v port=%v user=%v password=%v dbname=%v sslmode=%v", configurations.Host, configurations.Port, configurations.User, configurations.Password, configurations.DBName, configurations.SSLMode)
db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
if err != nil {
return db, err
}
return db, nil
}
// PingDb Is the health checker for the SQL database
func PingDb() (bool, error) {
dbInstance, err := NewConnection()
if err != nil {
log.Fatalf("The database connection failed %v\n", err.Error())
}
dbConnection, err := dbInstance.DB()
if err != nil {
return false, err
}
err = dbConnection.Ping()
if err != nil {
return false, err
}
return true, nil
}
func main() {
fmt.Println(PingDb())
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment