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") } }