| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- package bootstrap
- import (
- "errors"
- "fmt"
- "time"
- "github.com/runningwater/gohub/pkg/config"
- "github.com/runningwater/gohub/pkg/database"
- "github.com/runningwater/gohub/pkg/logger"
- "gorm.io/driver/mysql"
- "gorm.io/driver/sqlite"
- "gorm.io/gorm"
- )
- // SetupDB 初始化数据库和 ORM
- func SetupDB() {
- var dbConfig gorm.Dialector
- switch config.GetString("database.connection") {
- case "mysql":
- dsn := fmt.Sprintf("%v:%v@tcp(%v:%v)/%v?charset=%v&parseTime=True&loc=Local",
- config.GetString("database.mysql.username"),
- config.GetString("database.mysql.password"),
- config.GetString("database.mysql.host"),
- config.GetString("database.mysql.port"),
- config.GetString("database.mysql.database"),
- config.GetString("database.mysql.charset"),
- )
- dbConfig = mysql.New(mysql.Config{
- DSN: dsn,
- })
- case "sqlite":
- // 初始化 SQLite 数据库
- _database := config.GetString("database.sqlite.database")
- dbConfig = sqlite.Open(_database)
- default:
- panic(errors.New("不支持的数据库连接"))
- }
- // 连接数据库, 并设置 GORM 日志模式
- database.Connect(dbConfig, logger.NewGormLogger())
- // 设置最大连接数
- database.SQLDB.SetMaxOpenConns(config.GetInt("database.mysql.max_open_connections"))
- // 设置最大空闲连接数
- database.SQLDB.SetMaxIdleConns(config.GetInt("database.mysql.max_idle_connections"))
- // 设置连接的最大存活时间
- database.SQLDB.SetConnMaxLifetime(time.Duration(config.GetInt("database.mysql.max_life_seconds")) * time.Second)
- // _ = database.DB.AutoMigrate(&user.User{})
- }
|