github.com/infraboard/keyauth@v0.8.1/apps/session/impl/impl.go (about)

     1  package impl
     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/x/bsonx"
    11  	"google.golang.org/grpc"
    12  
    13  	"github.com/infraboard/keyauth/apps/ip2region"
    14  	"github.com/infraboard/keyauth/apps/session"
    15  	"github.com/infraboard/keyauth/apps/token"
    16  	"github.com/infraboard/keyauth/conf"
    17  )
    18  
    19  var (
    20  	// Service 服务实例
    21  	svr = &service{}
    22  )
    23  
    24  type service struct {
    25  	col *mongo.Collection
    26  
    27  	ip    ip2region.Service
    28  	token token.ServiceServer
    29  	log   logger.Logger
    30  	session.UnimplementedServiceServer
    31  }
    32  
    33  func (s *service) Config() error {
    34  	s.ip = app.GetInternalApp(ip2region.AppName).(ip2region.Service)
    35  	s.token = app.GetGrpcApp(token.AppName).(token.ServiceServer)
    36  
    37  	db := conf.C().Mongo.GetDB()
    38  	dc := db.Collection("session")
    39  
    40  	indexs := []mongo.IndexModel{
    41  		{
    42  			Keys: bsonx.Doc{{Key: "account", Value: bsonx.Int32(-1)}},
    43  		},
    44  		{
    45  			Keys: bsonx.Doc{{Key: "login_at", Value: bsonx.Int32(-1)}},
    46  		},
    47  	}
    48  
    49  	_, err := dc.Indexes().CreateMany(context.Background(), indexs)
    50  	if err != nil {
    51  		return err
    52  	}
    53  
    54  	s.col = dc
    55  	s.log = zap.L().Named("Session")
    56  	return nil
    57  }
    58  
    59  func (s *service) Name() string {
    60  	return session.AppName
    61  }
    62  
    63  func (s *service) Registry(server *grpc.Server) {
    64  	session.RegisterServiceServer(server, svr)
    65  }
    66  
    67  func init() {
    68  	app.RegistryGrpcApp(svr)
    69  }