- Go + Gin + GORM + PostgreSQL backend - RESTful API for material management - Docker deployment support - Database partitioning for billion-scale data - API documentation 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
34 lines
857 B
Go
34 lines
857 B
Go
package config
|
|
|
|
import (
|
|
"log"
|
|
"time"
|
|
|
|
"gorm.io/driver/postgres"
|
|
"gorm.io/gorm"
|
|
"gorm.io/gorm/logger"
|
|
)
|
|
|
|
func NewDatabase(cfg *Config) *gorm.DB {
|
|
db, err := gorm.Open(postgres.Open(cfg.DatabaseURL), &gorm.Config{
|
|
Logger: logger.Default.LogMode(logger.Info),
|
|
})
|
|
if err != nil {
|
|
log.Fatalf("Failed to connect to database: %v", err)
|
|
}
|
|
|
|
sqlDB, err := db.DB()
|
|
if err != nil {
|
|
log.Fatalf("Failed to get database instance: %v", err)
|
|
}
|
|
|
|
// 连接池配置 (优化: 支持更高并发)
|
|
sqlDB.SetMaxIdleConns(50) // 空闲连接数 (原 10)
|
|
sqlDB.SetMaxOpenConns(200) // 最大连接数 (原 100)
|
|
sqlDB.SetConnMaxLifetime(5 * time.Minute) // 连接最大生命周期
|
|
sqlDB.SetConnMaxIdleTime(2 * time.Minute) // 空闲连接最大生命周期
|
|
|
|
log.Println("Database connected successfully")
|
|
return db
|
|
}
|