package app import ( "fmt" "log" "os" "github.com/joho/godotenv" _ "github.com/lib/pq" "github.com/vinovest/sqlx" ) var db *sqlx.DB = nil func init() { if err := godotenv.Load(); err != nil { log.Println("Error loading .env file. If you use docker, then you can ignore this.") } if db == nil { connectPsql() } } func getDSN() string { user := os.Getenv("PSQL_USER") password := os.Getenv("PSQL_PASS") database := os.Getenv("PSQL_NAME") host, exists := os.LookupEnv("PSQL_HOST") if !exists { host = "localhost" } return fmt.Sprintf("postgresql://%s:%s@%s/%s?sslmode=disable", user, password, host, database) } func connectPsql() { var err error db, err = sqlx.Connect("postgres", getDSN()) if err != nil { panic(err) } } func ClosePsql() error { return db.Close() }