| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- package boot
- import (
- "fmt"
- "time"
- "yx-dataset-server/app/model"
- "yx-dataset-server/app/model/entity"
- iModel "yx-dataset-server/app/model/impl/model"
- "yx-dataset-server/library/logger"
- "yx-dataset-server/library/utils"
- "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.Dataset),
- new(entity.DatasetFile),
- new(entity.LoginHistory),
- new(entity.Menu),
- new(entity.Organization),
- new(entity.Role),
- new(entity.RoleMenu),
- new(entity.User),
- new(entity.UserDataset),
- new(entity.UserRole),
- new(entity.ChatAssistant),
- new(entity.ChatSession),
- new(entity.ChatMessage),
- new(entity.ChatDataset),
- new(entity.RobotConfig),
- new(entity.RobotDataset),
- )
- }
- func InjectModel(container *dig.Container) error {
- _ = container.Provide(iModel.NewTrans)
- _ = container.Provide(func(m *iModel.Trans) model.ITrans { return m })
- _ = container.Provide(iModel.NewDataset)
- _ = container.Provide(func(m *iModel.Dataset) model.IDataset { return m })
- _ = container.Provide(iModel.NewDatasetFile)
- _ = container.Provide(func(m *iModel.DatasetFile) model.IDatasetFile { return m })
- _ = container.Provide(iModel.NewLoginHistory)
- _ = container.Provide(func(m *iModel.LoginHistory) model.ILoginHistory { return m })
- _ = container.Provide(iModel.NewOrganization)
- _ = container.Provide(func(m *iModel.Organization) model.IOrganization { return m })
- _ = container.Provide(iModel.NewUser)
- _ = container.Provide(func(m *iModel.User) model.IUser { return m })
- _ = container.Provide(iModel.NewUserDataset)
- _ = container.Provide(func(m *iModel.UserDataset) model.IUserDataset { return m })
- _ = container.Provide(iModel.NewUserRole)
- _ = container.Provide(func(m *iModel.UserRole) model.IUserRole { return m })
- _ = container.Provide(iModel.NewRole)
- _ = container.Provide(func(m *iModel.Role) model.IRole { return m })
- _ = container.Provide(iModel.NewMenu)
- _ = container.Provide(func(m *iModel.Menu) model.IMenu { return m })
- _ = container.Provide(iModel.NewRoleMenu)
- _ = container.Provide(func(m *iModel.RoleMenu) model.IRoleMenu { return m })
- _ = container.Provide(iModel.NewChatAssistant)
- _ = container.Provide(func(m *iModel.ChatAssistant) model.IChatAssistant { return m })
- _ = container.Provide(iModel.NewChatSession)
- _ = container.Provide(func(m *iModel.ChatSession) model.IChatSession { return m })
- _ = container.Provide(iModel.NewChatMessage)
- _ = container.Provide(func(m *iModel.ChatMessage) model.IChatMessage { return m })
- _ = container.Provide(iModel.NewChatDataset)
- _ = container.Provide(func(m *iModel.ChatDataset) model.IChatDataset { return m })
- _ = container.Provide(iModel.NewRobotConfig)
- _ = container.Provide(func(m *iModel.RobotConfig) model.IRobotConfig { return m })
- _ = container.Provide(iModel.NewRobotDataset)
- _ = container.Provide(func(m *iModel.RobotDataset) model.IRobotDataset { return m })
- return nil
- }
|