mirror of
https://github.com/lorsanstand/HomeOps-Hub.git
synced 2026-06-19 16:45:15 +03:00
59 lines
1.7 KiB
Go
59 lines
1.7 KiB
Go
package store
|
|
|
|
import (
|
|
"context"
|
|
"database/sql"
|
|
"time"
|
|
|
|
domainHub "github.com/lorsanstand/HomeOps-Hub/hub/internal/domain"
|
|
"github.com/lorsanstand/HomeOps-Hub/hub/internal/store/sqlc/gen"
|
|
)
|
|
|
|
type HubStore struct {
|
|
queries *gen.Queries
|
|
}
|
|
|
|
func NewHubStore(db *sql.DB) *HubStore {
|
|
queries := gen.New(db)
|
|
return &HubStore{queries}
|
|
}
|
|
|
|
func (h *HubStore) NewAgent(ctx context.Context, agent domainHub.CreateAgentModel) error {
|
|
return h.queries.CreateAgent(ctx, toDBAgent(agent))
|
|
}
|
|
|
|
func (h *HubStore) GetAgentByAgentID(ctx context.Context, agentID string) (domainHub.AgentModel, error) {
|
|
data, err := h.queries.GetAgentByAgentID(ctx, agentID)
|
|
if err != nil {
|
|
return domainHub.AgentModel{}, err
|
|
}
|
|
return toAgentModel(data), nil
|
|
}
|
|
|
|
func (h *HubStore) UpdateAgentByID(ctx context.Context, ID int, updateAgent domainHub.CreateAgentModel) error {
|
|
data := toUpdateDBAgent(updateAgent)
|
|
data.ID = int64(ID)
|
|
return h.queries.UpdateAgentByID(ctx, data)
|
|
}
|
|
|
|
func (h *HubStore) CreateHeartbeat(ctx context.Context, heartbeat domainHub.CreateHeartbeatModel) error {
|
|
data := toDBHeartbeat(heartbeat)
|
|
return h.queries.InsertHeartbeat(ctx, data)
|
|
}
|
|
|
|
func (h *HubStore) GetHeartbeatsByIDAfter(ctx context.Context, agentID string, timestamp time.Time) ([]domainHub.HeartbeatModel, error) {
|
|
data := gen.SelectHeartbeatsAfterParams{AgentID: agentID, Timestamp: timestamp}
|
|
heartbeats, err := h.queries.SelectHeartbeatsAfter(ctx, data)
|
|
if err != nil {
|
|
return []domainHub.HeartbeatModel{}, err
|
|
}
|
|
|
|
heartbeatsModel := make([]domainHub.HeartbeatModel, len(heartbeats))
|
|
|
|
for i, heartbeat := range heartbeats {
|
|
heartbeatsModel[i] = toHeartBeatModel(heartbeat)
|
|
}
|
|
|
|
return heartbeatsModel, nil
|
|
}
|