fix logger
This commit is contained in:
@@ -1,13 +1,14 @@
|
|||||||
package postgres
|
package postgres
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"database/sql"
|
|
||||||
|
|
||||||
_ "github.com/lib/pq"
|
_ "github.com/lib/pq"
|
||||||
"github.com/pkg/errors"
|
"github.com/sirupsen/logrus"
|
||||||
log "github.com/sirupsen/logrus"
|
|
||||||
"go.ipao.vip/atom/container"
|
"go.ipao.vip/atom/container"
|
||||||
"go.ipao.vip/atom/opt"
|
"go.ipao.vip/atom/opt"
|
||||||
|
"gorm.io/driver/postgres"
|
||||||
|
"gorm.io/gorm"
|
||||||
|
"gorm.io/gorm/logger"
|
||||||
|
"gorm.io/gorm/schema"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Provide(opts ...opt.Option) error {
|
func Provide(opts ...opt.Option) error {
|
||||||
@@ -17,18 +18,38 @@ func Provide(opts ...opt.Option) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return container.Container.Provide(func() (*sql.DB, *Config, error) {
|
return container.Container.Provide(func() (*gorm.DB, *Config, error) {
|
||||||
log.Debugf("connect postgres with dsn: '%s'", conf.DSN())
|
dbConfig := postgres.Config{
|
||||||
db, err := sql.Open("postgres", conf.DSN())
|
DSN: conf.DSN(), // DSN data source name
|
||||||
if err != nil {
|
}
|
||||||
return nil, nil, errors.Wrap(err, "connect database")
|
logrus.Info("Open PostgreSQL:", conf.DSN())
|
||||||
|
|
||||||
|
gormConfig := gorm.Config{
|
||||||
|
NamingStrategy: schema.NamingStrategy{
|
||||||
|
TablePrefix: conf.Prefix,
|
||||||
|
SingularTable: conf.Singular,
|
||||||
|
},
|
||||||
|
DisableForeignKeyConstraintWhenMigrating: true,
|
||||||
|
Logger: logger.New(logrus.StandardLogger(), logger.Config{
|
||||||
|
SlowThreshold: 200, // 慢 SQL 阈值
|
||||||
|
LogLevel: logger.Info,
|
||||||
|
IgnoreRecordNotFoundError: true, // 忽略ErrRecordNotFound(记录未找到)错误
|
||||||
|
Colorful: false,
|
||||||
|
}),
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := db.Ping(); err != nil {
|
db, err := gorm.Open(postgres.New(dbConfig), &gormConfig)
|
||||||
db.Close()
|
if err != nil {
|
||||||
return nil, nil, errors.Wrap(err, "ping database")
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sqlDB, err := db.DB()
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
sqlDB.SetMaxIdleConns(conf.MaxIdleConns)
|
||||||
|
sqlDB.SetMaxOpenConns(conf.MaxOpenConns)
|
||||||
|
|
||||||
return db, &conf, err
|
return db, &conf, err
|
||||||
}, o.DiOptions()...)
|
}, o.DiOptions()...)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user