44 lines
888 B
Go
44 lines
888 B
Go
|
|
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
|
||
|
|
}
|
||
|
|
}
|