package database import ( "fmt" "nexus/config" "nexus/utils/logger" "gorm.io/driver/postgres" "gorm.io/gorm" ) var DB *gorm.DB func init() { dsn := fmt.Sprintf( "host=%s user=%s dbname=%s port=%d sslmode=%s", config.Database.Host, config.Database.User, config.Database.Name, config.Database.Port, config.Database.SSLMode, ) if config.Database.Password != "" { dsn += fmt.Sprintf(" password=%s", config.Database.Password) } var connectionError error DB, connectionError = gorm.Open(postgres.Open(dsn), &gorm.Config{ Logger: resolveGORMLogLevel(), }) if connectionError != nil { logger.Fatalf(LogPrefix, ConnectionFailed, connectionError) } sqlDB, poolError := DB.DB() if poolError != nil { logger.Fatalf(LogPrefix, PoolConfigFailed, poolError) } sqlDB.SetMaxOpenConns(MaxOpenConnections) sqlDB.SetMaxIdleConns(MaxIdleConnections) sqlDB.SetConnMaxLifetime(MaxConnectionLifetime) logger.Successf(LogPrefix, Connected, config.Database.Name) migrate() }