refactor: sync

This commit is contained in:
2026-06-17 16:52:30 +03:00
parent 8d3509b2d8
commit 5f72d2dcb4
17 changed files with 105 additions and 44 deletions
-1
View File
@@ -32,7 +32,6 @@ func NewApp() (*App, error) {
} }
logger := log.NewLogger(cfg) logger := log.NewLogger(cfg)
logger = logger.With().Str("component", "internal.app").Logger()
logger = logger.With().Str("name", cfg.AppName).Logger() logger = logger.With().Str("name", cfg.AppName).Logger()
sett, err := settings.ReadSettings(cfg.SettingsPath) sett, err := settings.ReadSettings(cfg.SettingsPath)
+12
View File
@@ -0,0 +1,12 @@
package domain
import (
"context"
domainHub "github.com/lorsanstand/HomeOps-Hub/shared/domain"
)
type Command struct {
domainHub.CapabilityCommand
Execute func(ctx context.Context, args map[string]string) (string, error)
}
@@ -9,19 +9,6 @@ import (
"github.com/rs/zerolog" "github.com/rs/zerolog"
) )
type Collector interface {
GatherInfoSystem() (domain.HostInfo, []domain.Capability)
}
type Settings interface {
InsertAgentID(agentID string) error
GetAgentID() string
}
type HubConnection interface {
RegisterAgent(ctx context.Context, RegisterData domain.RegisterAgentRequest) (domain.RegisterAgentResponse, error)
}
type AgentService struct { type AgentService struct {
collect Collector collect Collector
conn HubConnection conn HubConnection
@@ -38,8 +25,6 @@ func NewAgentService(
cfg *config_yaml.AgentConfig, cfg *config_yaml.AgentConfig,
logger zerolog.Logger, logger zerolog.Logger,
) *AgentService { ) *AgentService {
logger = logger.With().Str("component", "internal.service.agent_serivce").Logger()
return &AgentService{collect: collector, conn: conn, cfg: cfg, log: logger, settings: settings} return &AgentService{collect: collector, conn: conn, cfg: cfg, log: logger, settings: settings}
} }
@@ -0,0 +1,20 @@
package agent_service
import (
"context"
"github.com/lorsanstand/HomeOps-Hub/shared/domain"
)
type Collector interface {
GatherInfoSystem() (domain.HostInfo, []domain.Capability)
}
type Settings interface {
InsertAgentID(agentID string) error
GetAgentID() string
}
type HubConnection interface {
RegisterAgent(ctx context.Context, RegisterData domain.RegisterAgentRequest) (domain.RegisterAgentResponse, error)
}
@@ -0,0 +1,14 @@
package docker_service
import domainHub "github.com/lorsanstand/HomeOps-Hub/shared/domain"
func (d *DockerService) Capability() domainHub.Capability {
capability := domainHub.Capability{
Available: true,
Version: "0",
Name: "docker",
Reason: "",
}
for command := com
}
@@ -0,0 +1,19 @@
package docker_service
import (
"github.com/lorsanstand/HomeOps-Hub/agent/internal/domain"
domainHub "github.com/lorsanstand/HomeOps-Hub/shared/domain"
)
func (d *DockerService) commands() []domain.Command {
return []domain.Command{
{Execute: d.CheckDockerDaemon, CapabilityCommand: domainHub.CapabilityCommand{
Name: "check",
OptionalArgs: []domainHub.CommandArgs{},
RequiredArgs: []domainHub.CommandArgs{},
Version: "0",
Description: "Check docker daemon",
TypeOutput: "string",
}},
}
}
@@ -5,8 +5,6 @@ import (
"github.com/docker/docker/api/types" "github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/container" "github.com/docker/docker/api/types/container"
"github.com/lorsanstand/HomeOps-Hub/shared/domain"
"github.com/rs/zerolog" "github.com/rs/zerolog"
) )
@@ -23,14 +21,17 @@ type DockerService struct {
func NewDockerService(api dockerAPI, logger zerolog.Logger) *DockerService { func NewDockerService(api dockerAPI, logger zerolog.Logger) *DockerService {
return &DockerService{ return &DockerService{
dockerClient: api, dockerClient: api,
log: logger.With().Str("component", "internal.serivce.docker").Logger(), log: logger,
} }
} }
func (d *DockerService) CheckDockerDaemon(ctx context.Context) error { func (d *DockerService) CheckDockerDaemon(ctx context.Context, args map[string]string) (string, error) {
_, err := d.dockerClient.Ping(ctx) _, err := d.dockerClient.Ping(ctx)
d.log.Debug().Msg("ping docker") d.log.Debug().Msg("ping docker")
return err if err != nil {
return "", err
}
return "successful", nil
} }
func (d *DockerService) ContainersList(ctx context.Context) ([]container.Summary, error) { func (d *DockerService) ContainersList(ctx context.Context) ([]container.Summary, error) {
@@ -38,12 +39,3 @@ func (d *DockerService) ContainersList(ctx context.Context) ([]container.Summary
d.log.Debug().Msg("get container list") d.log.Debug().Msg("get container list")
return ContainersList, err return ContainersList, err
} }
func (d *DockerService) Capability() domain.Capability {
return domain.Capability{
Available: true,
Version: "0",
Name: "docker",
Reason: "",
}
}
@@ -0,0 +1,19 @@
package command_store
import (
"sync"
"github.com/lorsanstand/HomeOps-Hub/agent/internal/domain"
)
type CommandStore struct {
mutex sync.RWMutex
store map[string]*domain.Command
}
func (c *CommandStore) Get(name string) (*domain.Command, bool) {
c.mutex.RLock()
function, ok := c.store[name]
c.mutex.Unlock()
return function, ok
}
@@ -8,7 +8,7 @@ import (
"github.com/google/uuid" "github.com/google/uuid"
pb "github.com/lorsanstand/HomeOps-Hub/api/gen/homeops" pb "github.com/lorsanstand/HomeOps-Hub/api/gen/homeops"
domainHub "github.com/lorsanstand/HomeOps-Hub/hub/internal/domain" domainHub "github.com/lorsanstand/HomeOps-Hub/shared/domain"
"github.com/rs/zerolog" "github.com/rs/zerolog"
) )
@@ -8,7 +8,7 @@ import (
"time" "time"
pb "github.com/lorsanstand/HomeOps-Hub/api/gen/homeops" pb "github.com/lorsanstand/HomeOps-Hub/api/gen/homeops"
domainHub "github.com/lorsanstand/HomeOps-Hub/hub/internal/domain" domainHub "github.com/lorsanstand/HomeOps-Hub/shared/domain"
"github.com/rs/zerolog" "github.com/rs/zerolog"
"gotest.tools/v3/assert" "gotest.tools/v3/assert"
) )
@@ -4,7 +4,7 @@ import (
"context" "context"
pb "github.com/lorsanstand/HomeOps-Hub/api/gen/homeops" pb "github.com/lorsanstand/HomeOps-Hub/api/gen/homeops"
domainHub "github.com/lorsanstand/HomeOps-Hub/hub/internal/domain" domainHub "github.com/lorsanstand/HomeOps-Hub/shared/domain"
) )
type StreamConn interface { type StreamConn interface {
@@ -4,7 +4,7 @@ import (
"time" "time"
pb "github.com/lorsanstand/HomeOps-Hub/api/gen/homeops" pb "github.com/lorsanstand/HomeOps-Hub/api/gen/homeops"
domainHub "github.com/lorsanstand/HomeOps-Hub/hub/internal/domain" domainHub "github.com/lorsanstand/HomeOps-Hub/shared/domain"
) )
func toCreateHeartbeatModel(agentID string, heartbeat *pb.AgentEvent_Heartbeat) domainHub.CreateHeartbeatModel { func toCreateHeartbeatModel(agentID string, heartbeat *pb.AgentEvent_Heartbeat) domainHub.CreateHeartbeatModel {
@@ -6,7 +6,7 @@ import (
"sync" "sync"
pb "github.com/lorsanstand/HomeOps-Hub/api/gen/homeops" pb "github.com/lorsanstand/HomeOps-Hub/api/gen/homeops"
domainHub "github.com/lorsanstand/HomeOps-Hub/hub/internal/domain" domainHub "github.com/lorsanstand/HomeOps-Hub/shared/domain"
) )
type streamMock struct { type streamMock struct {
@@ -3,7 +3,7 @@ package connection_manager
import ( import (
"sync" "sync"
domainHub "github.com/lorsanstand/HomeOps-Hub/hub/internal/domain" domainHub "github.com/lorsanstand/HomeOps-Hub/shared/domain"
) )
type AgentConnStore struct { type AgentConnStore struct {
+4 -4
View File
@@ -77,7 +77,7 @@ func toDomainCapabilities(caps []byte) []domain.Capability {
return capabilities return capabilities
} }
func toDBHeartbeat(heartbeat domainHub.CreateHeartbeatModel) gen2.InsertHeartbeatParams { func toDBHeartbeat(heartbeat domain.CreateHeartbeatModel) gen2.InsertHeartbeatParams {
return gen2.InsertHeartbeatParams{ return gen2.InsertHeartbeatParams{
AgentID: heartbeat.AgentID, AgentID: heartbeat.AgentID,
@@ -88,12 +88,12 @@ func toDBHeartbeat(heartbeat domainHub.CreateHeartbeatModel) gen2.InsertHeartbea
} }
} }
func toHeartBeatModel(heartbeat gen2.Heartbeat) domainHub.HeartbeatModel { func toHeartBeatModel(heartbeat gen2.Heartbeat) domain.HeartbeatModel {
return domainHub.HeartbeatModel{ return domain.HeartbeatModel{
Timestamp: heartbeat.HeartbeatTimestamp, Timestamp: heartbeat.HeartbeatTimestamp,
AgentID: heartbeat.AgentID, AgentID: heartbeat.AgentID,
ID: int(heartbeat.ID), ID: int(heartbeat.ID),
Metrics: domainHub.SystemMetrics{ Metrics: domain.SystemMetrics{
CPUUsage: heartbeat.CpuUsage, CPUUsage: heartbeat.CpuUsage,
DiskUsage: heartbeat.DiskUsage, DiskUsage: heartbeat.DiskUsage,
MemoryUsage: heartbeat.MemoryUsage, MemoryUsage: heartbeat.MemoryUsage,
+5 -4
View File
@@ -7,6 +7,7 @@ import (
domainHub "github.com/lorsanstand/HomeOps-Hub/hub/internal/domain" domainHub "github.com/lorsanstand/HomeOps-Hub/hub/internal/domain"
"github.com/lorsanstand/HomeOps-Hub/hub/internal/store/sqlc/gen" "github.com/lorsanstand/HomeOps-Hub/hub/internal/store/sqlc/gen"
"github.com/lorsanstand/HomeOps-Hub/shared/domain"
) )
type HubStore struct { type HubStore struct {
@@ -36,19 +37,19 @@ func (h *HubStore) UpdateAgentByID(ctx context.Context, ID int, updateAgent doma
return h.queries.UpdateAgentByID(ctx, data) return h.queries.UpdateAgentByID(ctx, data)
} }
func (h *HubStore) CreateHeartbeat(ctx context.Context, heartbeat domainHub.CreateHeartbeatModel) error { func (h *HubStore) CreateHeartbeat(ctx context.Context, heartbeat domain.CreateHeartbeatModel) error {
data := toDBHeartbeat(heartbeat) data := toDBHeartbeat(heartbeat)
return h.queries.InsertHeartbeat(ctx, data) return h.queries.InsertHeartbeat(ctx, data)
} }
func (h *HubStore) GetHeartbeatsByIDAfter(ctx context.Context, agentID string, timestamp time.Time) ([]domainHub.HeartbeatModel, error) { func (h *HubStore) GetHeartbeatsByIDAfter(ctx context.Context, agentID string, timestamp time.Time) ([]domain.HeartbeatModel, error) {
data := gen.SelectHeartbeatsAfterParams{AgentID: agentID, Timestamp: timestamp} data := gen.SelectHeartbeatsAfterParams{AgentID: agentID, Timestamp: timestamp}
heartbeats, err := h.queries.SelectHeartbeatsAfter(ctx, data) heartbeats, err := h.queries.SelectHeartbeatsAfter(ctx, data)
if err != nil { if err != nil {
return []domainHub.HeartbeatModel{}, err return []domain.HeartbeatModel{}, err
} }
heartbeatsModel := make([]domainHub.HeartbeatModel, len(heartbeats)) heartbeatsModel := make([]domain.HeartbeatModel, len(heartbeats))
for i, heartbeat := range heartbeats { for i, heartbeat := range heartbeats {
heartbeatsModel[i] = toHeartBeatModel(heartbeat) heartbeatsModel[i] = toHeartBeatModel(heartbeat)