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