micro-document/pkg/db/db.go

41 lines
1.1 KiB
Go
Raw Normal View History

2025-06-10 03:10:19 +00:00
package db
import (
"fmt"
"micro-document/config"
2025-06-11 02:11:17 +00:00
"micro-document/internel/model"
2025-06-10 03:10:19 +00:00
"time"
"gorm.io/driver/mysql"
"gorm.io/gorm"
"gorm.io/gorm/logger"
)
var DocDB *gorm.DB
2025-06-11 02:11:17 +00:00
func DbInit() {
2025-06-10 03:10:19 +00:00
username := config.CF.DocDB.User
password := config.CF.DocDB.Password
address := config.CF.DocDB.Host
database := config.CF.DocDB.DbName
if username != "" || password != "" || address != "" || database != "" {
dsn := fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8mb4&parseTime=True&loc=Local", username, password, address, database)
dbq, err := gorm.Open(mysql.Open(dsn), &gorm.Config{PrepareStmt: true, DisableForeignKeyConstraintWhenMigrating: true, Logger: logger.Default.LogMode(logger.Warn)})
if err != nil {
panic(err)
} else {
sqlDB, err := dbq.DB()
if err != nil {
panic(err)
} else {
2025-06-11 02:11:17 +00:00
sqlDB.SetMaxIdleConns(20)
2025-06-10 03:10:19 +00:00
sqlDB.SetMaxOpenConns(100)
sqlDB.SetConnMaxLifetime(time.Hour)
}
}
2025-06-11 02:11:17 +00:00
DocDB = dbq.Debug()
2025-06-10 03:10:19 +00:00
DocDB.Set("gorm:table_options", "ENGINE=InnoDB default charset=utf8")
2025-06-13 02:29:50 +00:00
DocDB.AutoMigrate(&model.Governance{}, &model.PressReleases{}, &model.SecFilings{})
2025-06-10 03:10:19 +00:00
}
}