single intilialize DataService/TweetSearchService/ObjectStorageService

pull/159/head
Michael Li 2 years ago
parent 0ddfe11b4c
commit 5a45bc4885

@ -1,6 +1,8 @@
package dao package dao
import ( import (
"sync"
"github.com/rocboss/paopao-ce/internal/conf" "github.com/rocboss/paopao-ce/internal/conf"
"github.com/rocboss/paopao-ce/internal/core" "github.com/rocboss/paopao-ce/internal/core"
"github.com/rocboss/paopao-ce/internal/dao/jinzhu" "github.com/rocboss/paopao-ce/internal/dao/jinzhu"
@ -11,61 +13,73 @@ import (
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
) )
func NewDataService() (s core.DataService) { var (
var v core.VersionInfo ts core.TweetSearchService
if conf.CfgIf("Gorm") { ds core.DataService
s, v = jinzhu.NewDataService() oss core.ObjectStorageService
} else if conf.CfgIf("Sqlx") && conf.CfgIf("MySQL") {
s, v = sakila.NewDataService() onceTs, onceDs, onceOss sync.Once
} else if conf.CfgIf("Sqlx") && (conf.CfgIf("Postgres") || conf.CfgIf("PostgreSQL")) { )
s, v = slonik.NewDataService()
} else { func DataService() core.DataService {
// default use gorm as orm for sql database onceDs.Do(func() {
s, v = jinzhu.NewDataService() var v core.VersionInfo
} if conf.CfgIf("Gorm") {
logrus.Infof("use %s as data service with version %s", v.Name(), v.Version()) ds, v = jinzhu.NewDataService()
return } else if conf.CfgIf("Sqlx") && conf.CfgIf("MySQL") {
ds, v = sakila.NewDataService()
} else if conf.CfgIf("Sqlx") && (conf.CfgIf("Postgres") || conf.CfgIf("PostgreSQL")) {
ds, v = slonik.NewDataService()
} else {
// default use gorm as orm for sql database
ds, v = jinzhu.NewDataService()
}
logrus.Infof("use %s as data service with version %s", v.Name(), v.Version())
})
return ds
} }
func NewObjectStorageService() (oss core.ObjectStorageService) { func ObjectStorageService() core.ObjectStorageService {
var v core.VersionInfo onceOss.Do(func() {
if conf.CfgIf("AliOSS") { var v core.VersionInfo
oss, v = storage.NewAliossService() if conf.CfgIf("AliOSS") {
} else if conf.CfgIf("MinIO") { oss, v = storage.NewAliossService()
oss, v = storage.NewMinioService() } else if conf.CfgIf("MinIO") {
} else if conf.CfgIf("S3") { oss, v = storage.NewMinioService()
oss, v = storage.NewS3Service() } else if conf.CfgIf("S3") {
logrus.Infof("use S3 as object storage by version %s", v.Version()) oss, v = storage.NewS3Service()
return logrus.Infof("use S3 as object storage by version %s", v.Version())
} else if conf.CfgIf("LocalOSS") { return
oss, v = storage.NewLocalossService() } else if conf.CfgIf("LocalOSS") {
} else { oss, v = storage.NewLocalossService()
// default use AliOSS as object storage service } else {
oss, v = storage.NewAliossService() // default use AliOSS as object storage service
logrus.Infof("use default AliOSS as object storage by version %s", v.Version()) oss, v = storage.NewAliossService()
return logrus.Infof("use default AliOSS as object storage by version %s", v.Version())
} return
logrus.Infof("use %s as object storage by version %s", v.Name(), v.Version()) }
return logrus.Infof("use %s as object storage by version %s", v.Name(), v.Version())
})
return oss
} }
func NewTweetSearchService() core.TweetSearchService { func TweetSearchService() core.TweetSearchService {
var ( onceTs.Do(func() {
ts core.TweetSearchService var v core.VersionInfo
v core.VersionInfo ams := newAuthorizationManageService()
) if conf.CfgIf("Zinc") {
ams := newAuthorizationManageService() ts, v = search.NewZincTweetSearchService(ams)
if conf.CfgIf("Zinc") { } else if conf.CfgIf("Meili") {
ts, v = search.NewZincTweetSearchService(ams) ts, v = search.NewMeiliTweetSearchService(ams)
} else if conf.CfgIf("Meili") { } else {
ts, v = search.NewMeiliTweetSearchService(ams) // default use Zinc as tweet search service
} else { ts, v = search.NewZincTweetSearchService(ams)
// default use Zinc as tweet search service }
ts, v = search.NewZincTweetSearchService(ams) logrus.Infof("use %s as tweet search serice by version %s", v.Name(), v.Version())
}
logrus.Infof("use %s as tweet search serice by version %s", v.Name(), v.Version())
return search.NewBridgeTweetSearchService(ts) ts = search.NewBridgeTweetSearchService(ts)
})
return ts
} }
func newAuthorizationManageService() (s core.AuthorizationManageService) { func newAuthorizationManageService() (s core.AuthorizationManageService) {

@ -10,5 +10,5 @@ var (
) )
func Initialize() { func Initialize() {
objectStorage = dao.NewObjectStorageService() objectStorage = dao.ObjectStorageService()
} }

@ -14,8 +14,8 @@ var (
) )
func Initialize() { func Initialize() {
ds = dao.NewDataService() ds = dao.DataService()
ts = dao.NewTweetSearchService() ts = dao.TweetSearchService()
oss = dao.NewObjectStorageService() oss = dao.ObjectStorageService()
DisablePhoneVerify = !conf.CfgIf("Sms") DisablePhoneVerify = !conf.CfgIf("Sms")
} }

Loading…
Cancel
Save