55 lines
1.0 KiB
Go
55 lines
1.0 KiB
Go
package config
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
|
|
"github.com/Caknoooo/go-gin-clean-starter/pkg/constants"
|
|
"github.com/joho/godotenv"
|
|
"gorm.io/driver/postgres"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
func RunExtension(db *gorm.DB) {
|
|
db.Exec("CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\";")
|
|
}
|
|
|
|
func SetUpDatabaseConnection() *gorm.DB {
|
|
if os.Getenv("APP_ENV") != constants.ENUM_RUN_PRODUCTION {
|
|
err := godotenv.Load(".env")
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
}
|
|
|
|
dbUser := os.Getenv("DB_USER")
|
|
dbPass := os.Getenv("DB_PASS")
|
|
dbHost := os.Getenv("DB_HOST")
|
|
dbName := os.Getenv("DB_NAME")
|
|
dbPort := os.Getenv("DB_PORT")
|
|
|
|
dsn := fmt.Sprintf("host=%v user=%v password=%v dbname=%v port=%v", dbHost, dbUser, dbPass, dbName, dbPort)
|
|
|
|
db, err := gorm.Open(postgres.New(postgres.Config{
|
|
DSN: dsn,
|
|
PreferSimpleProtocol: true,
|
|
}), &gorm.Config{
|
|
Logger: SetupLogger(),
|
|
})
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
RunExtension(db)
|
|
|
|
return db
|
|
}
|
|
|
|
func CloseDatabaseConnection(db *gorm.DB) {
|
|
dbSQL, err := db.DB()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
dbSQL.Close()
|
|
}
|