Skip to content

Commit

Permalink
refactor(orm,cache): use DATABASE_URL and REDIS_URL env instead
Browse files Browse the repository at this point in the history
  • Loading branch information
adhocore committed Mar 27, 2021
1 parent bf17b7a commit 8910662
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 13 deletions.
20 changes: 10 additions & 10 deletions cache/redis.go
Expand Up @@ -2,6 +2,7 @@ package cache

import (
"net/http"
"net/url"
"os"
"sync"
"time"
Expand All @@ -15,18 +16,19 @@ var pool *redis.Pool
var prefix = "url:"

func connect() {
cacheHost := os.Getenv("APP_CACHE_HOST")
if cacheHost == "" {
dsn := os.Getenv("REDIS_URL")
if dsn == "" {
return
}

parse, _ := url.Parse(dsn)
pass, _ := parse.User.Password()

pool = &redis.Pool{
MaxIdle: 12,
IdleTimeout: 300 * time.Second,
Dial: func() (redis.Conn, error) {
user, pass := os.Getenv("APP_CACHE_USER"), os.Getenv("APP_CACHE_PASS")

return redis.Dial("tcp", cacheHost, redis.DialUsername(user), redis.DialPassword(pass))
return redis.Dial("tcp", parse.Host, redis.DialUsername(parse.User.Username()), redis.DialPassword(pass))
},
}
}
Expand All @@ -35,13 +37,11 @@ func connect() {
func Connection() redis.Conn {
once.Do(connect)

if nil == pool {
return nil
if nil != pool {
return pool.Get()
}

conn := pool.Get()

return conn
return nil
}

// LookupURL looks up if certain short code is popular enough to be in cache
Expand Down
16 changes: 13 additions & 3 deletions orm/postgres.go
@@ -1,7 +1,10 @@
package orm

import (
"fmt"
"log"
"net"
"net/url"
"os"
"strings"
"sync"
Expand All @@ -17,18 +20,25 @@ var conn *gorm.DB
// pgConnect connects to postgres db
// It returns gorm DB instance.
func pgConnect() *gorm.DB {
dsn := os.Getenv("APP_DB_DSN")
dsn := os.Getenv("DATABASE_URL")
if dsn == "" {
log.Fatal("Database configuration DSN missing, Pass in APP_DB_DSN env")
log.Fatal("Database configuration DSN missing, Pass in DATABASE_URL env")
}

parse, _ := url.Parse(dsn)
dbname := strings.Trim(parse.Path, "/")
pass, _ := parse.User.Password()
host, port, _ := net.SplitHostPort(parse.Host)

logLevel, env := logger.Warn, os.Getenv("APP_ENV")
if env == "prod" {
logLevel = logger.Silent
} else if env == "test" {
dsn = strings.Replace(dsn, "dbname=", "dbname=test_", 1)
dbname = "test_" + dbname
}

dsn = fmt.Sprintf("host=%s port=%s user=%s password=%s database=%s", host, port, parse.User.Username(), pass, dbname)

db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{
Logger: logger.Default.LogMode(logLevel),
})
Expand Down

0 comments on commit 8910662

Please sign in to comment.