Skip to content

Commit

Permalink
optimize rocboss#148 lazy initial gorm db in first use
Browse files Browse the repository at this point in the history
  • Loading branch information
alimy committed Jul 7, 2022
1 parent 65f8bd6 commit d5b7018
Show file tree
Hide file tree
Showing 6 changed files with 27 additions and 26 deletions.
10 changes: 3 additions & 7 deletions internal/conf/conf.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import (
)

var (
LoggerSetting *LoggerSettingS
loggerSetting *LoggerSettingS
loggerFileSetting *LoggerFileSettingS
loggerZincSetting *LoggerZincSettingS
loggerMeiliSetting *LoggerMeiliSettingS
Expand Down Expand Up @@ -57,7 +57,7 @@ func setupSetting(suite []string, noDefault bool) error {
"BigCacheIndex": &BigCacheIndexSetting,
"Alipay": &AlipaySetting,
"SmsJuhe": &SmsJuheSetting,
"Logger": &LoggerSetting,
"Logger": &loggerSetting,
"LoggerFile": &loggerFileSetting,
"LoggerZinc": &loggerZincSetting,
"LoggerMeili": &loggerMeiliSetting,
Expand Down Expand Up @@ -97,11 +97,7 @@ func Initialize(suite []string, noDefault bool) {
}

setupLogger()

err = setupDBEngine()
if err != nil {
log.Fatalf("init.setupDBEngine err: %v", err)
}
setupDBEngine()
}

// Cfg get value by key if exist
Expand Down
27 changes: 15 additions & 12 deletions internal/conf/db.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package conf

import (
"sync"
"time"

"github.com/go-redis/redis/v8"
Expand All @@ -15,10 +16,21 @@ import (
)

var (
DBEngine *gorm.DB
Redis *redis.Client
db *gorm.DB
Redis *redis.Client
once sync.Once
)

func MustGormDB() *gorm.DB {
once.Do(func() {
var err error
if db, err = newDBEngine(); err != nil {
logrus.Fatalf("new gorm db failed: %s", err)
}
})
return db
}

func newDBEngine() (*gorm.DB, error) {
newLogger := logger.New(
logrus.StandardLogger(), // io writer(日志输出的目标,前缀和日志包含的内容)
Expand Down Expand Up @@ -69,19 +81,10 @@ func newDBEngine() (*gorm.DB, error) {
return db, err
}

// setupDBEngine 暂时只支持MySQL
func setupDBEngine() error {
var err error
DBEngine, err = newDBEngine()
if err != nil {
return err
}

func setupDBEngine() {
Redis = redis.NewClient(&redis.Options{
Addr: redisSetting.Host,
Password: redisSetting.Password,
DB: redisSetting.DB,
})

return nil
}
2 changes: 1 addition & 1 deletion internal/conf/logger.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ func newFileLogger() io.Writer {

func setupLogger() {
logrus.SetFormatter(&logrus.JSONFormatter{})
logrus.SetLevel(LoggerSetting.logLevel())
logrus.SetLevel(loggerSetting.logLevel())

if CfgIf("LoggerFile") {
out := newFileLogger()
Expand Down
4 changes: 2 additions & 2 deletions internal/dao/jinzhu/jinzhu.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ func NewDataService() (core.DataService, core.VersionInfo) {
c core.CacheIndexService
v core.VersionInfo
)
db := conf.DBEngine
db := conf.MustGormDB()

i := newIndexPostsService(db)
if conf.CfgIf("SimpleCacheIndex") {
Expand Down Expand Up @@ -71,7 +71,7 @@ func NewDataService() (core.DataService, core.VersionInfo) {

func NewAuthorizationManageService() core.AuthorizationManageService {
return &authorizationManageServant{
db: conf.DBEngine,
db: conf.MustGormDB(),
}
}

Expand Down
8 changes: 6 additions & 2 deletions internal/middleware/jwt.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ import (
)

func JWT() gin.HandlerFunc {
// TODO: optimize get user from a simple service that provide fetch a user info interface.
db := conf.MustGormDB()
return func(c *gin.Context) {
var (
token string
Expand Down Expand Up @@ -54,7 +56,7 @@ func JWT() gin.HandlerFunc {
ID: claims.UID,
},
}
user, _ = user.Get(conf.DBEngine)
user, _ = user.Get(db)
c.Set("USER", user)

// 强制下线机制
Expand All @@ -76,6 +78,8 @@ func JWT() gin.HandlerFunc {
}

func JwtLoose() gin.HandlerFunc {
// TODO: optimize get user from a simple service that provide fetch a user info interface.
db := conf.MustGormDB()
return func(c *gin.Context) {
token, exist := c.GetQuery("token")
if !exist {
Expand All @@ -98,7 +102,7 @@ func JwtLoose() gin.HandlerFunc {
ID: claims.UID,
},
}
user, err := user.Get(conf.DBEngine)
user, err := user.Get(db)
if err == nil && (conf.JWTSetting.Issuer+":"+user.Salt) == claims.Issuer {
c.Set("USER", user)
}
Expand Down
2 changes: 0 additions & 2 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,6 @@ import (
)

var (
version, commitID, buildDate string

noDefaultFeatures bool
features suites
)
Expand Down

0 comments on commit d5b7018

Please sign in to comment.