wms-be/config/database.go

55 lines
1.1 KiB
Go

package config
import (
"fmt"
"github.com/Caknoooo/go-gin-clean-starter/pkg/constants"
"github.com/joho/godotenv"
"github.com/spf13/viper"
"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 viper.GetString("APP_ENV") != constants.ENUM_RUN_PRODUCTION {
err := godotenv.Load(".env")
if err != nil {
panic(err)
}
}
dbUser := viper.GetString("DB_USER")
dbPass := viper.GetString("DB_PASS")
dbHost := viper.GetString("DB_HOST")
dbName := viper.GetString("DB_NAME")
dbPort := viper.GetString("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()
}