From 602175481fb1d5a0fccd6ee355f38c54298c7cc0 Mon Sep 17 00:00:00 2001 From: lorsan Date: Sat, 4 Apr 2026 21:16:39 +0300 Subject: [PATCH] refractor: hub conn --- .gitignore | 1 + cmd/hub/main.go | 5 ++++ internal/hub/app/app.go | 42 +++++++++++++++++++++++++++++++- internal/hub/grpc/server.go | 12 ++++++--- internal/shared/config/config.go | 11 +++++---- 5 files changed, 61 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index e69de29..2eea525 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1 @@ +.env \ No newline at end of file diff --git a/cmd/hub/main.go b/cmd/hub/main.go index da29a2c..afc06ec 100644 --- a/cmd/hub/main.go +++ b/cmd/hub/main.go @@ -1,4 +1,9 @@ package main +import "github.com/lorsanstand/HomeOps-Hub/internal/hub/app" + func main() { + start := app.NewApp() + + start.Run() } diff --git a/internal/hub/app/app.go b/internal/hub/app/app.go index 48bacef..55e6989 100644 --- a/internal/hub/app/app.go +++ b/internal/hub/app/app.go @@ -1,11 +1,51 @@ package app import ( + "fmt" + "net" + + pb "github.com/lorsanstand/HomeOps-Hub/api/gen/homeops" + grpcserv "github.com/lorsanstand/HomeOps-Hub/internal/hub/grpc" "github.com/lorsanstand/HomeOps-Hub/internal/shared/config" + "github.com/lorsanstand/HomeOps-Hub/internal/shared/log" "github.com/rs/zerolog" + "google.golang.org/grpc" ) type App struct { cfg *config.Config - log *zerolog.Logger + log zerolog.Logger +} + +func NewApp() *App { + cfg, err := config.NewConfig() + if err != nil { + fmt.Errorf("failed get config: %v", err) + } + + logger := log.NewLogger(cfg) + + return &App{cfg: cfg, log: logger} +} + +func (a *App) Run() { + address := fmt.Sprintf("http://0.0.0.0:%v", a.cfg.Port) + + lis, err := net.Listen("tcp", fmt.Sprintf(":%v", a.cfg.Port)) + if err != nil { + a.log.Error().Err(err).Msg("failed started listen") + return + } + + grpcServer := grpc.NewServer() + pb.RegisterHubServer(grpcServer, grpcserv.NewServer()) + + a.log.Info().Str("address", address).Msg("server started") + + err = grpcServer.Serve(lis) + if err != nil { + a.log.Error().Err(err).Msg("failed started grpc server") + return + } + } diff --git a/internal/hub/grpc/server.go b/internal/hub/grpc/server.go index 0083b07..9fccb5a 100644 --- a/internal/hub/grpc/server.go +++ b/internal/hub/grpc/server.go @@ -3,15 +3,19 @@ package grpc import ( "context" - "github.com/lorsanstand/HomeOps-Hub/api/gen/homeops" + pb "github.com/lorsanstand/HomeOps-Hub/api/gen/homeops" "google.golang.org/protobuf/types/known/emptypb" ) type Server struct { - homeops.UnimplementedHubServer + pb.UnimplementedHubServer } -func (s *Server) Ping(ctx context.Context, _ *emptypb.Empty) (*homeops.PongResponse, error) { - return &homeops.PongResponse{Pong: "Huiiii"}, nil +func NewServer() *Server { + return &Server{} +} + +func (s *Server) Ping(ctx context.Context, _ *emptypb.Empty) (*pb.PongResponse, error) { + return &pb.PongResponse{Pong: "Pong"}, nil } diff --git a/internal/shared/config/config.go b/internal/shared/config/config.go index 1981df0..5ce002d 100644 --- a/internal/shared/config/config.go +++ b/internal/shared/config/config.go @@ -9,13 +9,14 @@ import ( ) type Config struct { - DBHost string `env:"DB_HOST" env-required:"true"` - DBPort int `env:"DB_PORT" env-required:"true"` - DBPassword string `env:"DB_PASS" env-required:"true"` - DBUser string `env:"DB_USER" env-required:"true"` - DBName string `env:"DB_NAME" env-required:"true"` + DBHost string `env:"DB_HOST"` + DBPort int `env:"DB_PORT"` + DBPassword string `env:"DB_PASS"` + DBUser string `env:"DB_USER"` + DBName string `env:"DB_NAME"` LogLevel string `env:"LOG_LEVEL" env-default:"INFO"` Mode string `env:"MODE" env-default:"DEV"` + Port int `env:"PORT" env-default:"9000"` } func NewConfig() (*Config, error) {