ca9faa0acd
Add node-aware check history and probe registration infrastructure: - ProbeNode model and nodes table (SQLite + Postgres) - node_id column on check_history for multi-source tracking - Store interface: RegisterNode, GetNode, GetAllNodes, DeleteNode, SaveCheckFromNode - Dialect: UpsertNodeSQL (INSERT OR REPLACE / ON CONFLICT) - API endpoints: POST /api/probe/register, GET /api/probe/assignments, POST /api/probe/results - Backward compatible: existing SaveCheck wraps SaveCheckFromNode with empty node_id
52 lines
1.5 KiB
Go
52 lines
1.5 KiB
Go
package store
|
|
|
|
import (
|
|
"go-upkeep/internal/models"
|
|
)
|
|
|
|
type Store interface {
|
|
Init() error
|
|
|
|
// Sites
|
|
GetSites() ([]models.Site, error)
|
|
AddSite(site models.Site) error
|
|
UpdateSite(site models.Site) error
|
|
UpdateSitePaused(id int, paused bool) error
|
|
DeleteSite(id int) error
|
|
|
|
// Alerts
|
|
GetAllAlerts() ([]models.AlertConfig, error)
|
|
GetAlert(id int) (models.AlertConfig, error)
|
|
AddAlert(name, aType string, settings map[string]string) error
|
|
UpdateAlert(id int, name, aType string, settings map[string]string) error
|
|
DeleteAlert(id int) error
|
|
|
|
// Declarative config support
|
|
GetSiteByName(name string) (models.Site, error)
|
|
GetAlertByName(name string) (models.AlertConfig, error)
|
|
AddSiteReturningID(site models.Site) (int, error)
|
|
AddAlertReturningID(name, aType string, settings map[string]string) (int, error)
|
|
|
|
// Users
|
|
GetAllUsers() ([]models.User, error)
|
|
AddUser(username, publicKey, role string) error
|
|
UpdateUser(id int, username, publicKey, role string) error
|
|
DeleteUser(id int) error
|
|
|
|
// History
|
|
SaveCheck(siteID int, latencyNs int64, isUp bool) error
|
|
SaveCheckFromNode(siteID int, nodeID string, latencyNs int64, isUp bool) error
|
|
LoadAllHistory(limit int) (map[int][]models.CheckRecord, error)
|
|
|
|
// Nodes
|
|
RegisterNode(node models.ProbeNode) error
|
|
GetNode(id string) (models.ProbeNode, error)
|
|
GetAllNodes() ([]models.ProbeNode, error)
|
|
UpdateNodeLastSeen(id string) error
|
|
DeleteNode(id string) error
|
|
|
|
// Backup & Restore
|
|
ExportData() (models.Backup, error)
|
|
ImportData(data models.Backup) error
|
|
}
|