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() }