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