app-cloudep-member-server/internal/svc/service_context.go

56 lines
1.6 KiB
Go
Raw Normal View History

2024-08-21 00:21:29 +00:00
package svc
2024-08-21 08:12:34 +00:00
import (
"app-cloudep-member-server/internal/config"
"app-cloudep-member-server/internal/domain"
domainUC "app-cloudep-member-server/internal/domain/usecase"
"app-cloudep-member-server/internal/model"
mgo "app-cloudep-member-server/internal/model/mongo"
"app-cloudep-member-server/internal/usecase"
ers "code.30cm.net/digimon/library-go/errors"
vi "code.30cm.net/digimon/library-go/validator"
"fmt"
"github.com/zeromicro/go-zero/core/stores/redis"
"github.com/zeromicro/go-zero/core/stores/sqlx"
)
2024-08-21 00:21:29 +00:00
type ServiceContext struct {
2024-08-21 08:12:34 +00:00
Config config.Config
Validate vi.Validate
AccountModel model.AccountModel
UserModel model.UserTableModel
AccountToUidModel model.AccountToUidModel
GenUIDUseCase domainUC.UIDGenerateUseCase
Redis redis.Redis
2024-08-21 00:21:29 +00:00
}
func NewServiceContext(c config.Config) *ServiceContext {
2024-08-21 08:12:34 +00:00
// 設置
ers.Scope = domain.Scope
sqlConn := sqlx.NewMysql(c.DB.DsnString)
newRedis, err := redis.NewRedis(c.RedisCluster, redis.Cluster())
if err != nil {
panic(err)
}
mongo := mgo.NewAutoIdModel(
fmt.Sprintf(
2024-08-22 13:12:14 +00:00
"%s://%s:%s", c.Mongo.Schema,
c.Mongo.Host, c.Mongo.Port),
2024-08-21 08:12:34 +00:00
c.Mongo.Database,
2024-08-22 13:12:14 +00:00
c.Mongo.Collection)
2024-08-21 08:12:34 +00:00
2024-08-21 00:21:29 +00:00
return &ServiceContext{
2024-08-21 08:12:34 +00:00
Config: c,
Validate: vi.MustValidator(vi.WithAccount("account")),
Redis: *newRedis,
UserModel: model.NewUserTableModel(sqlConn, c.Cache),
AccountToUidModel: model.NewAccountToUidModel(sqlConn, c.Cache),
AccountModel: model.NewAccountModel(sqlConn, c.Cache),
GenUIDUseCase: usecase.MustGenerateUseCase(usecase.GenerateUseCaseParam{
GenerateUIDRepo: mongo,
}),
2024-08-21 00:21:29 +00:00
}
}