github.com/infraboard/keyauth@v0.8.1/apps/namespace/impl/impl.go (about) 1 package grpc 2 3 import ( 4 "context" 5 6 "github.com/infraboard/mcube/app" 7 "github.com/infraboard/mcube/logger" 8 "github.com/infraboard/mcube/logger/zap" 9 "go.mongodb.org/mongo-driver/mongo" 10 "go.mongodb.org/mongo-driver/mongo/options" 11 "go.mongodb.org/mongo-driver/x/bsonx" 12 "google.golang.org/grpc" 13 14 "github.com/infraboard/keyauth/apps/department" 15 "github.com/infraboard/keyauth/apps/namespace" 16 "github.com/infraboard/keyauth/apps/policy" 17 "github.com/infraboard/keyauth/apps/role" 18 "github.com/infraboard/keyauth/conf" 19 ) 20 21 var ( 22 // Service 服务实例 23 svr = &service{} 24 ) 25 26 type service struct { 27 col *mongo.Collection 28 depart department.ServiceServer 29 policy policy.ServiceServer 30 role role.ServiceServer 31 log logger.Logger 32 33 namespace.UnimplementedServiceServer 34 } 35 36 func (s *service) Config() error { 37 s.depart = app.GetGrpcApp(department.AppName).(department.ServiceServer) 38 s.policy = app.GetGrpcApp(policy.AppName).(policy.ServiceServer) 39 s.role = app.GetGrpcApp(role.AppName).(role.ServiceServer) 40 41 db := conf.C().Mongo.GetDB() 42 ac := db.Collection("namespace") 43 44 indexs := []mongo.IndexModel{ 45 { 46 Keys: bsonx.Doc{ 47 {Key: "domain", Value: bsonx.Int32(-1)}, 48 {Key: "name", Value: bsonx.Int32(-1)}, 49 }, 50 Options: options.Index().SetUnique(true), 51 }, 52 { 53 Keys: bsonx.Doc{{Key: "create_at", Value: bsonx.Int32(-1)}}, 54 }, 55 } 56 57 _, err := ac.Indexes().CreateMany(context.Background(), indexs) 58 if err != nil { 59 return err 60 } 61 62 s.col = ac 63 s.log = zap.L().Named("Namespace") 64 return nil 65 } 66 67 func (s *service) Name() string { 68 return namespace.AppName 69 } 70 71 func (s *service) Registry(server *grpc.Server) { 72 namespace.RegisterServiceServer(server, svr) 73 } 74 75 func init() { 76 app.RegistryGrpcApp(svr) 77 }