package postgres import ( "fmt" "shared/logger" "gorm.io/driver/postgres" "gorm.io/gorm" ) type Config struct { Host string Port string User string Password string DBName string SSLMode string } func NewPostgresDB(cfg Config) (*gorm.DB, error) { dsn := fmt.Sprintf("host=%s port=%s user=%s password=%s dbname=%s sslmode=%s", cfg.Host, cfg.Port, cfg.User, cfg.Password, cfg.DBName, cfg.SSLMode) db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{}) if err != nil { logger.Error().Err(err).Msg("Failed to connect to PostgreSQL database") return nil, err } logger.Info().Msg("Connected to PostgreSQL database successfully") return db, nil }