Files
material_texture/internal/config/database.go
likegears 85ba15c564 Initial commit: Material Texture API service
- 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>
2025-12-11 15:29:49 +08:00

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
}