package db import ( "fmt" "gorm.io/driver/postgres" "gorm.io/gorm" "gorm.io/gorm/logger" "merch-parser-api/config" "strings" ) func Connection(c *config.Config) (*gorm.DB, error) { dsn := fmt.Sprintf("host=%s port=%s user=%s password=%s dbname=%s sslmode=%s", c.DBConf.Host, c.DBConf.Port, c.DBConf.User, c.DBConf.Password, c.DBConf.DBName, c.DBConf.SSLMode) db, err := gorm.Open(postgres.New(postgres.Config{ DSN: dsn, PreferSimpleProtocol: true, }), &gorm.Config{ Logger: logger.Default.LogMode(setLevel(c.DBConf.LogLevel)), }) if err != nil { return nil, err } return db, nil } func setLevel(level string) logger.LogLevel { switch strings.ToLower(level) { case "silent": return logger.Silent case "error": return logger.Error case "warn": return logger.Warn case "info": return logger.Info default: return logger.Info } }