Files
LINUX-AETHERFORGE/internal/fleet/atlas.go
drjones 3678b199d0
Some checks failed
Test / test (push) Has been cancelled
Initial commit: AetherForge Linux (forge-mesh) v0.1.0-dev
2026-07-04 09:31:23 +00:00

60 lines
1.3 KiB
Go

package fleet
import (
"database/sql"
"github.com/google/uuid"
)
func (s *Store) InsertSeerEvent(hostID, eventType, payload string) error {
_, err := s.db.Exec(`
INSERT INTO seer_events (id, host_id, event_type, payload_json)
VALUES (?, ?, ?, ?)
`, uuid.NewString(), nullString(hostID), eventType, payload)
return err
}
func (s *Store) ListSeerEvents(limit int) ([]SeerEvent, error) {
if limit <= 0 {
limit = 50
}
rows, err := s.db.Query(`
SELECT id, host_id, event_type, payload_json, created_at
FROM seer_events ORDER BY created_at DESC LIMIT ?
`, limit)
if err != nil {
return nil, err
}
defer rows.Close()
var events []SeerEvent
for rows.Next() {
var e SeerEvent
var hostID sql.NullString
if err := rows.Scan(&e.ID, &hostID, &e.EventType, &e.PayloadJSON, &e.CreatedAt); err != nil {
return nil, err
}
if hostID.Valid {
e.HostID = hostID.String
}
events = append(events, e)
}
return events, rows.Err()
}
// SeerEvent is a court/LOTL timeline entry.
type SeerEvent struct {
ID string `json:"id"`
HostID string `json:"host_id,omitempty"`
EventType string `json:"event_type"`
PayloadJSON string `json:"payload_json"`
CreatedAt string `json:"created_at"`
}
func nullString(s string) sql.NullString {
if s == "" {
return sql.NullString{}
}
return sql.NullString{String: s, Valid: true}
}