api/pkg/db/handler.go

44 lines
888 B
Go
Raw Permalink Normal View History

2025-07-06 17:59:18 +03:00
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
}
}