🏗️ microservice fabric splitting
This commit is contained in:
52
app/community/api/internal/svc/service_context.go
Normal file
52
app/community/api/internal/svc/service_context.go
Normal file
@@ -0,0 +1,52 @@
|
||||
package svc
|
||||
|
||||
import (
|
||||
"github.com/casbin/casbin/v2"
|
||||
"github.com/lionsoul2014/ip2region/binding/golang/xdb"
|
||||
"github.com/redis/go-redis/v9"
|
||||
"github.com/zeromicro/go-zero/rest"
|
||||
sensitive "github.com/zmexing/go-sensitive-word"
|
||||
"go.mongodb.org/mongo-driver/v2/mongo"
|
||||
"schisandra-album-cloud-microservices/app/community/api/internal/config"
|
||||
"schisandra-album-cloud-microservices/app/community/api/internal/middleware"
|
||||
"schisandra-album-cloud-microservices/app/community/api/model/mongodb"
|
||||
"schisandra-album-cloud-microservices/app/community/api/model/mysql"
|
||||
"schisandra-album-cloud-microservices/app/community/api/model/mysql/query"
|
||||
"schisandra-album-cloud-microservices/common/casbinx"
|
||||
"schisandra-album-cloud-microservices/common/ip2region"
|
||||
"schisandra-album-cloud-microservices/common/redisx"
|
||||
"schisandra-album-cloud-microservices/common/sensitivex"
|
||||
)
|
||||
|
||||
type ServiceContext struct {
|
||||
Config config.Config
|
||||
SecurityHeadersMiddleware rest.Middleware
|
||||
CasbinVerifyMiddleware rest.Middleware
|
||||
AuthorizationMiddleware rest.Middleware
|
||||
NonceMiddleware rest.Middleware
|
||||
MongoClient *mongo.Database
|
||||
DB *query.Query
|
||||
CasbinEnforcer *casbin.SyncedCachedEnforcer
|
||||
RedisClient *redis.Client
|
||||
Sensitive *sensitive.Manager
|
||||
Ip2Region *xdb.Searcher
|
||||
}
|
||||
|
||||
func NewServiceContext(c config.Config) *ServiceContext {
|
||||
redisClient := redisx.NewRedis(c.Redis.Host, c.Redis.Pass, c.Redis.DB)
|
||||
db, queryDB := mysql.NewMySQL(c.Mysql.DataSource, c.Mysql.MaxOpenConn, c.Mysql.MaxIdleConn, redisClient)
|
||||
casbinEnforcer := casbinx.NewCasbin(db)
|
||||
return &ServiceContext{
|
||||
Config: c,
|
||||
SecurityHeadersMiddleware: middleware.NewSecurityHeadersMiddleware().Handle,
|
||||
CasbinVerifyMiddleware: middleware.NewCasbinVerifyMiddleware(casbinEnforcer).Handle,
|
||||
AuthorizationMiddleware: middleware.NewAuthorizationMiddleware().Handle,
|
||||
NonceMiddleware: middleware.NewNonceMiddleware(redisClient).Handle,
|
||||
MongoClient: mongodb.NewMongoDB(c.Mongo.Uri, c.Mongo.Username, c.Mongo.Password, c.Mongo.AuthSource, c.Mongo.Database),
|
||||
DB: queryDB,
|
||||
CasbinEnforcer: casbinEnforcer,
|
||||
RedisClient: redisClient,
|
||||
Sensitive: sensitivex.NewSensitive(),
|
||||
Ip2Region: ip2region.NewIP2Region(),
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user