12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- package boot
- import (
- "fmt"
- "gxt-file-server/app/model"
- "gxt-file-server/app/model/entity"
- iModel "gxt-file-server/app/model/impl/model"
- "gxt-file-server/pkg/logger"
- "time"
- "github.com/gogf/gf/frame/g"
- "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",
- g.Cfg().GetString("mysql.user"),
- g.Cfg().GetString("mysql.password"),
- g.Cfg().GetString("mysql.host"),
- g.Cfg().GetInt("mysql.port"),
- g.Cfg().GetString("mysql.db_name"),
- g.Cfg().GetString("mysql.parameters"))
- db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
- SkipDefaultTransaction: true, // 跳过默认事务
- NamingStrategy: schema.NamingStrategy{
- TablePrefix: g.Cfg().GetString("gorm.table_prefix"),
- SingularTable: true, // 使用单数表名
- },
- })
- if err != nil {
- return nil, err
- }
- db.Logger = logger.NewEntry(logger.GetLogger())
- if g.Cfg().GetString("common.run_mode") == "debug" {
- db.Debug()
- }
- sqlDb, err := db.DB()
- if err != nil {
- return nil, err
- }
- sqlDb.SetMaxIdleConns(g.Cfg().GetInt("gorm.max_idle_conns"))
- sqlDb.SetMaxOpenConns(g.Cfg().GetInt("gorm.max_open_conns"))
- sqlDb.SetConnMaxLifetime(time.Duration(g.Cfg().GetInt("gorm.max_open_conns")) * time.Second)
- return db, nil
- }
- // 自动创建数据表映射
- func autoMigrate(db *gorm.DB) error {
- return db.AutoMigrate(
- new(entity.Demo),
- new(entity.FileHistory),
- new(entity.FileChunk),
- )
- }
- // InjectModel inject models
- 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 })
- _ = container.Provide(iModel.NewFileHistory)
- _ = container.Provide(func(m *iModel.FileHistory) model.IFileHistory { return m })
- _ = container.Provide(iModel.NewFileChunk)
- _ = container.Provide(func(m *iModel.FileChunk) model.IFileChunk { return m })
- return nil
- }
|