refactor(store): add error returns to all Store interface methods

Every Store method now returns an error. Callers handle errors
gracefully — TUI logs to event log, server returns HTTP 500,
monitor engine logs and retries. All rows.Scan() errors are now
checked in sqlstore.go instead of silently appending corrupt data.

- GetSites, GetAllAlerts, GetAllUsers return ([]T, error)
- GetAlert returns (AlertConfig, error) instead of (AlertConfig, bool)
- AddSite, UpdateSite, DeleteSite, etc. all return error
- SaveCheck, LoadAllHistory, ExportData return error
- ~25 caller sites updated across tui, server, monitor, main
This commit is contained in:
2026-05-15 00:37:20 -04:00
parent ab75f61c6b
commit d4f4012c8a
10 changed files with 185 additions and 93 deletions
+19 -9
View File
@@ -107,17 +107,23 @@ func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
if keyMsg, ok := msg.(tea.KeyMsg); ok {
switch keyMsg.String() {
case "y", "Y":
if store.Get() != nil {
if s := store.Get(); s != nil {
switch m.deleteTab {
case 0:
store.Get().DeleteSite(m.deleteID)
if err := s.DeleteSite(m.deleteID); err != nil {
monitor.AddLog("Delete site failed: " + err.Error())
}
monitor.RemoveSite(m.deleteID)
m.adjustCursor(len(m.sites) - 1)
case 1:
store.Get().DeleteAlert(m.deleteID)
if err := s.DeleteAlert(m.deleteID); err != nil {
monitor.AddLog("Delete alert failed: " + err.Error())
}
m.adjustCursor(len(m.alerts) - 1)
case 3:
store.Get().DeleteUser(m.deleteID)
if err := s.DeleteUser(m.deleteID); err != nil {
monitor.AddLog("Delete user failed: " + err.Error())
}
m.adjustCursor(len(m.users) - 1)
}
}
@@ -313,8 +319,8 @@ func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
site := m.sites[m.cursor]
monitor.ToggleSitePause(site.ID)
site.Paused = !site.Paused
if store.Get() != nil {
store.Get().UpdateSitePaused(site.ID, site.Paused)
if s := store.Get(); s != nil {
_ = s.UpdateSitePaused(site.ID, site.Paused)
}
m.refreshData()
}
@@ -464,10 +470,14 @@ func (m *Model) refreshData() {
}
ordered = append(ordered, ungrouped...)
m.sites = ordered
if store.Get() != nil {
m.alerts = store.Get().GetAllAlerts()
if s := store.Get(); s != nil {
if alerts, err := s.GetAllAlerts(); err == nil {
m.alerts = alerts
}
if m.isAdmin {
m.users = store.Get().GetAllUsers()
if users, err := s.GetAllUsers(); err == nil {
m.users = users
}
}
}
m.logViewport.SetContent(strings.Join(monitor.GetLogs(), "\n"))