common/pkg/database/init.go

43 lines
1.0 KiB
Go

package database
import (
"fmt"
"log"
"os"
"time"
"gorm.io/driver/postgres"
"gorm.io/gorm"
"gorm.io/gorm/logger"
)
func InitDatabase(opt *DBOption) (*gorm.DB, error) {
dsn := fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%s sslmode=disable TimeZone=Asia/Shanghai", opt.Host, opt.User, opt.Password, opt.DBName, opt.Port)
return gorm.Open(postgres.Open(dsn), &gorm.Config{})
}
func InitDefaultDatabase() (*gorm.DB, error) {
path := os.Getenv(ConfigPathEnvKey)
if path == "" {
path = DefaultConfigPath
}
cfg, err := LoadDBConfig(path)
if err != nil {
return nil, fmt.Errorf("获取数据库配置失败:%v", err)
}
db, err := InitDatabase(cfg)
if err != nil {
return nil, fmt.Errorf("初始化数据库失败:%v", err)
}
db.Logger = logger.New(
log.New(os.Stdout, "\r\n", log.LstdFlags),
logger.Config{
SlowThreshold: time.Second * 3,
LogLevel: logger.Warn,
Colorful: true,
IgnoreRecordNotFoundError: true,
},
)
return db, nil
}