Files
2025-04-26 00:00:59 +08:00

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
}
}