80 lines
2.2 KiB
Go
80 lines
2.2 KiB
Go
package main
|
|
|
|
import (
|
|
"flag"
|
|
"net"
|
|
|
|
"src.dualinventive.com/go/mtinfo-go"
|
|
|
|
"google.golang.org/grpc"
|
|
"google.golang.org/grpc/reflection"
|
|
diConfig "src.dualinventive.com/go/lib/config"
|
|
"src.dualinventive.com/go/lib/dilog"
|
|
"src.dualinventive.com/go/users-service/config"
|
|
grpcService "src.dualinventive.com/go/users-service/grpc"
|
|
"src.dualinventive.com/go/users-service/internal/storage/gorm"
|
|
)
|
|
|
|
var (
|
|
// ApplicationName is the name of the application
|
|
ApplicationName = "users-service-grpc" //nolint: gochecknoglobals
|
|
// ApplicationVersion is the version of the application
|
|
ApplicationVersion = "0.0.0-dev" //nolint: gochecknoglobals
|
|
c = config.New() //nolint: gochecknoglobals
|
|
)
|
|
|
|
func main() {
|
|
var confFile string
|
|
flag.StringVar(&confFile, "config", ApplicationName, "Configuration-file name")
|
|
flag.Parse()
|
|
|
|
logger, err := diConfig.Load(confFile, &c)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
logger.WithFields(dilog.Fields{
|
|
"app-name": ApplicationName,
|
|
"app-version": ApplicationVersion,
|
|
}).Info("starting")
|
|
|
|
lis, err := net.Listen("tcp", ":"+c.GrpcConfig.Port) //nolint:gosec
|
|
if err != nil {
|
|
logger.WithError(err).Fatal("error listining on port " + c.GrpcConfig.Port)
|
|
}
|
|
logger.WithField("port", c.GrpcConfig.Port).Info("Serving users at tcp")
|
|
|
|
mtinfoClient, err := mtinfo.NewClient(mtinfo.GRPC, c.MtinfoClientConfig)
|
|
if err != nil {
|
|
logger.WithError(err).Fatal("error creating Mtinfo")
|
|
}
|
|
|
|
repoDatabase, err := gorm.NewMySQLConnection(
|
|
c.DatabaseConfig.Host,
|
|
c.DatabaseConfig.Port,
|
|
c.DatabaseConfig.Name,
|
|
c.DatabaseConfig.User,
|
|
c.DatabaseConfig.Password,
|
|
)
|
|
if err != nil {
|
|
logger.WithError(err).Fatal("error connecting to database")
|
|
}
|
|
userRepository, err := gorm.NewUserRepository(logger, repoDatabase)
|
|
if err != nil {
|
|
logger.WithError(err).Fatal("error creating UserRepository")
|
|
}
|
|
|
|
grpcServer := grpc.NewServer()
|
|
server, err := grpcService.NewServer(logger, userRepository, mtinfoClient)
|
|
if err != nil {
|
|
logger.WithError(err).Fatal("error creating the server")
|
|
}
|
|
grpcService.RegisterUserServiceServer(grpcServer, server)
|
|
// Register reflection service on gRPC server.
|
|
reflection.Register(grpcServer)
|
|
|
|
if err := grpcServer.Serve(lis); err != nil {
|
|
logger.WithError(err).Fatal("error starting grpc server")
|
|
}
|
|
}
|