service_context.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package svc
  2. import (
  3. "wechat-api/internal/config"
  4. "wechat-api/internal/middleware"
  5. "github.com/suyuan32/simple-admin-core/rpc/coreclient"
  6. "github.com/zeromicro/go-zero/core/logx"
  7. "wechat-api/ent"
  8. _ "wechat-api/ent/runtime"
  9. "github.com/casbin/casbin/v2"
  10. "github.com/zeromicro/go-zero/rest"
  11. "github.com/zeromicro/go-zero/zrpc"
  12. )
  13. type ServiceContext struct {
  14. Config config.Config
  15. Casbin *casbin.Enforcer
  16. Authority rest.Middleware
  17. DB *ent.Client
  18. CoreRpc coreclient.Core
  19. }
  20. func NewServiceContext(c config.Config) *ServiceContext {
  21. rds := c.RedisConf.MustNewUniversalRedis()
  22. cbn := c.CasbinConf.MustNewCasbinWithOriginalRedisWatcher(c.CasbinDatabaseConf.Type, c.CasbinDatabaseConf.GetDSN(), c.RedisConf)
  23. db := ent.NewClient(
  24. ent.Log(logx.Info), // logger
  25. ent.Driver(c.DatabaseConf.NewNoCacheDriver()),
  26. ent.Debug(), // debug mode
  27. )
  28. coreRpc := coreclient.NewCore(zrpc.NewClientIfEnable(c.CoreRpc))
  29. return &ServiceContext{
  30. Config: c,
  31. Authority: middleware.NewAuthorityMiddleware(cbn, rds, coreRpc).Handle,
  32. DB: db,
  33. CoreRpc: coreRpc,
  34. }
  35. }