You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

58 lines
1.2 KiB

package initialize
import (
"autocode/config"
"autocode/global"
"autocode/initialize/internal"
"fmt"
"gorm.io/driver/postgres"
"gorm.io/gorm"
"log"
)
func GormInit() *gorm.DB {
p := global.GVA_CONFIG.Pgsql
if p.Dbname == "" {
return nil
}
dataSourceName := fmt.Sprintf(
"host=%v port=%v user=%v dbname=%v password=%v sslmode=disable",
p.Path,
p.Port,
p.Username,
p.Dbname,
p.Password,
)
db, err := gorm.Open(postgres.Open(dataSourceName), &gorm.Config{})
if err != nil {
log.Fatal("failed to connect database: ", err)
} else {
sqlDB, _ := db.DB()
sqlDB.SetMaxOpenConns(50)
sqlDB.SetMaxIdleConns(20)
fmt.Sprintf("connection to postgres database: %s", dataSourceName)
}
return db
}
// GormPgSqlByConfig 初始化 Postgresql 数据库 通过参数
func GormPgSqlByConfig(p config.DB) *gorm.DB {
if p.Dbname == "" {
return nil
}
pgsqlConfig := postgres.Config{
DSN: p.Dsn(), // DSN data source name
PreferSimpleProtocol: false,
}
if db, err := gorm.Open(postgres.New(pgsqlConfig), internal.Gorm.Config()); err != nil {
panic(err)
} else {
sqlDB, _ := db.DB()
sqlDB.SetMaxIdleConns(p.MaxIdleConns)
sqlDB.SetMaxOpenConns(p.MaxOpenConns)
return db
}
}