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