mirror of
https://github.com/lorsanstand/HomeOps-Hub.git
synced 2026-06-19 14:25:16 +03:00
70 lines
1.9 KiB
Go
70 lines
1.9 KiB
Go
package store
|
|
|
|
import (
|
|
"encoding/json"
|
|
|
|
domainHub "github.com/lorsanstand/HomeOps-Hub/hub/internal/domain"
|
|
gen2 "github.com/lorsanstand/HomeOps-Hub/hub/internal/store/sqlc/gen"
|
|
"github.com/lorsanstand/HomeOps-Hub/shared/domain"
|
|
)
|
|
|
|
func toDBAgent(agent domainHub.CreateAgentModel) gen2.CreateAgentParams {
|
|
return gen2.CreateAgentParams{
|
|
AgentID: agent.AgentID,
|
|
AgentName: &agent.AgentName,
|
|
Architecture: agent.Architecture,
|
|
System: agent.System,
|
|
Hostname: agent.Hostname,
|
|
Version: agent.Version,
|
|
Capabilities: toJSONCapabilities(agent.Capabilities),
|
|
}
|
|
}
|
|
|
|
func toUpdateDBAgent(agent domainHub.CreateAgentModel) gen2.UpdateAgentByIDParams {
|
|
return gen2.UpdateAgentByIDParams{
|
|
AgentID: agent.AgentID,
|
|
AgentName: &agent.AgentName,
|
|
Architecture: agent.Architecture,
|
|
System: agent.System,
|
|
Hostname: agent.Hostname,
|
|
Version: agent.Version,
|
|
Capabilities: toJSONCapabilities(agent.Capabilities),
|
|
}
|
|
}
|
|
|
|
func toJSONCapabilities(caps []domain.Capability) []byte {
|
|
data, err := json.Marshal(caps)
|
|
if err != nil {
|
|
// Note: Error is silently handled - consider logging in production
|
|
return []byte{}
|
|
}
|
|
return data
|
|
}
|
|
|
|
func toAgentModel(dbAgent gen2.Agent) domainHub.AgentModel {
|
|
var dbAgentName string
|
|
if dbAgent.AgentName != nil {
|
|
dbAgentName = *dbAgent.AgentName
|
|
}
|
|
|
|
return domainHub.AgentModel{
|
|
ID: int(dbAgent.ID),
|
|
AgentID: dbAgent.AgentID,
|
|
AgentName: dbAgentName,
|
|
Architecture: dbAgent.Architecture,
|
|
System: dbAgent.System,
|
|
Hostname: dbAgent.Hostname,
|
|
Capabilities: toDomainCapabilities(dbAgent.Capabilities),
|
|
}
|
|
}
|
|
|
|
func toDomainCapabilities(caps []byte) []domain.Capability {
|
|
var capabilities []domain.Capability
|
|
err := json.Unmarshal(caps, &capabilities)
|
|
if err != nil {
|
|
// Note: Error is silently handled - consider logging in production
|
|
return []domain.Capability{}
|
|
}
|
|
return capabilities
|
|
}
|