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 }