refactor: move rpc mappper for shared

This commit is contained in:
2026-05-23 16:59:00 +03:00
parent 0c2fdfee2a
commit 8a3da3b017
3 changed files with 22 additions and 19 deletions
+3 -2
View File
@@ -6,6 +6,7 @@ import (
pb "github.com/lorsanstand/HomeOps-Hub/api/gen/homeops" pb "github.com/lorsanstand/HomeOps-Hub/api/gen/homeops"
"github.com/lorsanstand/HomeOps-Hub/shared/domain" "github.com/lorsanstand/HomeOps-Hub/shared/domain"
"github.com/lorsanstand/HomeOps-Hub/shared/mappers/rpc"
"google.golang.org/grpc" "google.golang.org/grpc"
) )
@@ -28,11 +29,11 @@ func (c *Connection) Hub() pb.HubClient {
} }
func (c *Connection) RegisterAgent(ctx context.Context, RegisterData domain.RegisterAgentRequest) (domain.RegisterAgentResponse, error) { func (c *Connection) RegisterAgent(ctx context.Context, RegisterData domain.RegisterAgentRequest) (domain.RegisterAgentResponse, error) {
ResponseData, err := c.Hub().RegisterAgent(ctx, new(domain.ToGRPCAgentRequest(RegisterData))) ResponseData, err := c.Hub().RegisterAgent(ctx, new(rpc.ToGRPCAgentRequest(RegisterData)))
if err != nil { if err != nil {
return domain.RegisterAgentResponse{}, fmt.Errorf("send register agent: %w", err) return domain.RegisterAgentResponse{}, fmt.Errorf("send register agent: %w", err)
} }
response, err := domain.ToDomainAgentResponse(ResponseData) response, err := rpc.ToDomainAgentResponse(ResponseData)
if err != nil { if err != nil {
return domain.RegisterAgentResponse{}, fmt.Errorf("casting response: %w", err) return domain.RegisterAgentResponse{}, fmt.Errorf("casting response: %w", err)
} }
+4 -3
View File
@@ -7,6 +7,7 @@ import (
pb "github.com/lorsanstand/HomeOps-Hub/api/gen/homeops" pb "github.com/lorsanstand/HomeOps-Hub/api/gen/homeops"
"github.com/lorsanstand/HomeOps-Hub/hub/internal/service/connection_manager" "github.com/lorsanstand/HomeOps-Hub/hub/internal/service/connection_manager"
"github.com/lorsanstand/HomeOps-Hub/shared/domain" "github.com/lorsanstand/HomeOps-Hub/shared/domain"
"github.com/lorsanstand/HomeOps-Hub/shared/mappers/rpc"
"github.com/rs/zerolog" "github.com/rs/zerolog"
"google.golang.org/grpc" "google.golang.org/grpc"
"google.golang.org/protobuf/types/known/emptypb" "google.golang.org/protobuf/types/known/emptypb"
@@ -46,7 +47,7 @@ func (h *HubHandler) Ping(ctx context.Context, _ *emptypb.Empty) (*pb.PongRespon
func (h *HubHandler) RegisterAgent(ctx context.Context, request *pb.RegisterAgentRequest) (*pb.RegisterAgentResponse, error) { func (h *HubHandler) RegisterAgent(ctx context.Context, request *pb.RegisterAgentRequest) (*pb.RegisterAgentResponse, error) {
h.log.Debug().Str("agentID", request.AgentId).Str("agentName", request.AgentName).Msg("register agent request received") h.log.Debug().Str("agentID", request.AgentId).Str("agentName", request.AgentName).Msg("register agent request received")
data, err := domain.ToDomainAgentRequest(request) data, err := rpc.ToDomainAgentRequest(request)
if err != nil { if err != nil {
h.log.Error().Err(err).Msg("failed to casting request") h.log.Error().Err(err).Msg("failed to casting request")
return &pb.RegisterAgentResponse{}, ErrFailedRegister return &pb.RegisterAgentResponse{}, ErrFailedRegister
@@ -54,10 +55,10 @@ func (h *HubHandler) RegisterAgent(ctx context.Context, request *pb.RegisterAgen
resp, err := h.hub.RegisterAgent(ctx, data) resp, err := h.hub.RegisterAgent(ctx, data)
if err != nil { if err != nil {
h.log.Error().Err(err).Msg("failed register agent") h.log.Error().Err(err).Msg("failed register agent")
return domain.ToGRPCAgentResponse(resp), ErrFailedRegister return rpc.ToGRPCAgentResponse(resp), ErrFailedRegister
} }
h.log.Info().Str("agentID", resp.AgentID).Msg("register agent request completed") h.log.Info().Str("agentID", resp.AgentID).Msg("register agent request completed")
return domain.ToGRPCAgentResponse(resp), nil return rpc.ToGRPCAgentResponse(resp), nil
} }
func (h *HubHandler) StreamConnection(stream grpc.BidiStreamingServer[pb.AgentEvent, pb.ServerCommandRequest]) error { func (h *HubHandler) StreamConnection(stream grpc.BidiStreamingServer[pb.AgentEvent, pb.ServerCommandRequest]) error {
@@ -1,21 +1,22 @@
package domain package rpc
import ( import (
"fmt" "fmt"
pb "github.com/lorsanstand/HomeOps-Hub/api/gen/homeops" pb "github.com/lorsanstand/HomeOps-Hub/api/gen/homeops"
"github.com/lorsanstand/HomeOps-Hub/shared/domain"
) )
func ToDomainAgentRequest(request *pb.RegisterAgentRequest) (RegisterAgentRequest, error) { func ToDomainAgentRequest(request *pb.RegisterAgentRequest) (domain.RegisterAgentRequest, error) {
if request == nil { if request == nil {
return RegisterAgentRequest{}, fmt.Errorf("request is empty") return domain.RegisterAgentRequest{}, fmt.Errorf("request is empty")
} }
return RegisterAgentRequest{ return domain.RegisterAgentRequest{
AgentVersion: request.Version, AgentVersion: request.Version,
AgentID: request.AgentId, AgentID: request.AgentId,
AgentName: request.AgentName, AgentName: request.AgentName,
Host: HostInfo{ Host: domain.HostInfo{
System: request.Host.System, System: request.Host.System,
Hostname: request.Host.Hostname, Hostname: request.Host.Hostname,
Arch: request.Host.Arch, Arch: request.Host.Arch,
@@ -24,26 +25,26 @@ func ToDomainAgentRequest(request *pb.RegisterAgentRequest) (RegisterAgentReques
}, nil }, nil
} }
func ToDomainAgentResponse(response *pb.RegisterAgentResponse) (RegisterAgentResponse, error) { func ToDomainAgentResponse(response *pb.RegisterAgentResponse) (domain.RegisterAgentResponse, error) {
if response == nil { if response == nil {
return RegisterAgentResponse{}, fmt.Errorf("request is empty") return domain.RegisterAgentResponse{}, fmt.Errorf("request is empty")
} }
return RegisterAgentResponse{ return domain.RegisterAgentResponse{
AgentID: response.AgentId, AgentID: response.AgentId,
Heartbeat: int(response.HeartbeatIntervalSecond), Heartbeat: int(response.HeartbeatIntervalSecond),
}, nil }, nil
} }
func ToDomainCapabilities(capability []*pb.Capability) []Capability { func ToDomainCapabilities(capability []*pb.Capability) []domain.Capability {
var caps []Capability var caps []domain.Capability
for _, capa := range capability { for _, capa := range capability {
if capa == nil { if capa == nil {
continue continue
} }
caps = append(caps, Capability{ caps = append(caps, domain.Capability{
Name: capa.Name, Name: capa.Name,
Version: capa.Version, Version: capa.Version,
Reason: capa.Reason, Reason: capa.Reason,
@@ -54,7 +55,7 @@ func ToDomainCapabilities(capability []*pb.Capability) []Capability {
return caps return caps
} }
func ToGRPCAgentRequest(request RegisterAgentRequest) pb.RegisterAgentRequest { func ToGRPCAgentRequest(request domain.RegisterAgentRequest) pb.RegisterAgentRequest {
return pb.RegisterAgentRequest{ return pb.RegisterAgentRequest{
AgentId: request.AgentID, AgentId: request.AgentID,
AgentName: request.AgentName, AgentName: request.AgentName,
@@ -68,11 +69,11 @@ func ToGRPCAgentRequest(request RegisterAgentRequest) pb.RegisterAgentRequest {
} }
} }
func ToGRPCAgentResponse(response RegisterAgentResponse) *pb.RegisterAgentResponse { func ToGRPCAgentResponse(response domain.RegisterAgentResponse) *pb.RegisterAgentResponse {
return &pb.RegisterAgentResponse{AgentId: response.AgentID, HeartbeatIntervalSecond: int64(response.Heartbeat)} return &pb.RegisterAgentResponse{AgentId: response.AgentID, HeartbeatIntervalSecond: int64(response.Heartbeat)}
} }
func ToGRPCCapability(caps []Capability) []*pb.Capability { func ToGRPCCapability(caps []domain.Capability) []*pb.Capability {
var capability []*pb.Capability var capability []*pb.Capability
for _, capi := range caps { for _, capi := range caps {
capability = append(capability, &pb.Capability{ capability = append(capability, &pb.Capability{