service_context.go 1.3 KB

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