41 lines
1.0 KiB
Go
41 lines
1.0 KiB
Go
package initialize
|
|
|
|
import (
|
|
"gorm.io/driver/postgres"
|
|
"gorm.io/gorm"
|
|
"sundynix-go/config"
|
|
"sundynix-go/global"
|
|
"sundynix-go/initialize/internal"
|
|
)
|
|
|
|
// GromPgsql 初始化 Postgresql 数据库
|
|
func GromPgsql() *gorm.DB {
|
|
p := global.Config.Pgsql
|
|
return initPgsqlDatabase(p)
|
|
}
|
|
|
|
// GormPgsqlByConfig 根据配置文件初始化 Postgresql 数据库
|
|
func GormPgsqlByConfig(p config.Pgsql) *gorm.DB {
|
|
return initPgsqlDatabase(p)
|
|
}
|
|
|
|
// initPgsqlDatabase 初始化 Postgresql 数据库的辅助函数
|
|
func initPgsqlDatabase(p config.Pgsql) *gorm.DB {
|
|
if p.Dbname == "" {
|
|
return nil
|
|
}
|
|
pgsqlConfig := postgres.Config{
|
|
DSN: p.Dsn(), // DSN 数据库连接串
|
|
PreferSimpleProtocol: false, // 禁用隐式 prepared statement
|
|
}
|
|
if db, err := gorm.Open(postgres.New(pgsqlConfig), internal.Gorm.Config(p.Prefix, p.Singular)); err != nil {
|
|
panic(err)
|
|
} else {
|
|
sqlDb, _ := db.DB()
|
|
sqlDb.SetMaxIdleConns(p.MaxIdleConns)
|
|
sqlDb.SetMaxOpenConns(p.MaxOpenConns)
|
|
global.Logger.Info("postgresql connect success")
|
|
return db
|
|
}
|
|
}
|