35 lines
822 B
Go
35 lines
822 B
Go
package db
|
|
|
|
import (
|
|
"database/sql"
|
|
"fmt"
|
|
"os"
|
|
|
|
"github.com/uptrace/bun"
|
|
"github.com/uptrace/bun/dialect/pgdialect"
|
|
"github.com/uptrace/bun/driver/pgdriver"
|
|
)
|
|
|
|
var db *bun.DB
|
|
|
|
func DBConnect() {
|
|
dbHost := os.Getenv("DB_HOST")
|
|
dbName := os.Getenv("DB_NAME")
|
|
dbUser := os.Getenv("DB_USER")
|
|
dbPasswd := os.Getenv("DB_PASSWD")
|
|
|
|
if dbHost == "" || dbName == "" || dbUser == "" || os.Getenv("STORAGE_PATH") == "" {
|
|
panic("Missing database environment variabled!")
|
|
}
|
|
|
|
// TODO: retry connection or only connect at the first moment that we need the db
|
|
dbUrl := fmt.Sprintf("postgres://%s:%s@%s/%s?dial_timeout=10s&sslmode=disable", dbUser, dbPasswd, dbHost, dbName)
|
|
|
|
sqlDB := sql.OpenDB(pgdriver.NewConnector(pgdriver.WithDSN(dbUrl)))
|
|
db = bun.NewDB(sqlDB, pgdialect.New())
|
|
}
|
|
|
|
func GetDB() *bun.DB {
|
|
return db
|
|
}
|