123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- package boot
- import (
- "fmt"
- "gxt-api-frame/app/model"
- "gxt-api-frame/app/model/entity"
- iModel "gxt-api-frame/app/model/impl/model"
- "gxt-api-frame/library/logger"
- "gxt-api-frame/library/utils"
- "time"
- "go.uber.org/dig"
- "gorm.io/driver/mysql"
- "gorm.io/gorm"
- "gorm.io/gorm/schema"
- )
- // 初始化gorm
- func initGorm() (*gorm.DB, error) {
- dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?%s",
- utils.GetConfig("mysql.user").String(),
- utils.GetConfig("mysql.password").String(),
- utils.GetConfig("mysql.host").String(),
- utils.GetConfig("mysql.port").Int(),
- utils.GetConfig("mysql.db_name").String(),
- utils.GetConfig("mysql.parameters").String())
- db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
- SkipDefaultTransaction: true, // 跳过默认事务
- NamingStrategy: schema.NamingStrategy{
- TablePrefix: utils.GetConfig("gorm.table_prefix").String(),
- SingularTable: true, // 使用单数表名
- },
- })
- if err != nil {
- return nil, err
- }
- db.Logger = logger.NewEntry(logger.GetLogger())
- if utils.GetConfig("common.run_mode").String() == "debug" {
- db.Debug()
- }
- sqlDb, err := db.DB()
- if err != nil {
- return nil, err
- }
- sqlDb.SetMaxIdleConns(utils.GetConfig("gorm.max_idle_conns").Int())
- sqlDb.SetMaxOpenConns(utils.GetConfig("gorm.max_open_conns").Int())
- sqlDb.SetConnMaxLifetime(time.Duration(utils.GetConfig("gorm.max_open_conns").Int()) * time.Second)
- return db, nil
- }
- // 自动创建数据表映射
- func autoMigrate(db *gorm.DB) error {
- return db.AutoMigrate(
- new(entity.Demo),
- )
- }
- func InjectModel(container *dig.Container) error {
- _ = container.Provide(iModel.NewTrans)
- _ = container.Provide(func(m *iModel.Trans) model.ITrans { return m })
- _ = container.Provide(iModel.NewDemo)
- _ = container.Provide(func(m *iModel.Demo) model.IDemo { return m })
- return nil
- }
|