- Rename Go module switchboard-core → armature (155+ files) - Rename Docker image → gobha/armature - Rename K8s resources, secrets, deployments - Rename Prometheus metrics switchboard_* → armature_* - Rename env vars SWITCHBOARD_ADMIN_* → ARMATURE_ADMIN_* - Rename DB names switchboard_core* → armature* - Update all frontend branding, notification templates, docs - Update CI scripts, e2e tests, Keycloak realm, nginx conf - Rename scripts/switchboard-ca.sh → scripts/armature-ca.sh - Rename k8s/switchboard.yaml → k8s/armature.yaml - Rename chart alerting/dashboard files - Fix: DockerHub push uses env: binding for secret injection - Helm chart updated (name, labels, template functions, dashboard, alerting) - Replace favicon/icon assets with Armature brand No functional changes. Pure mechanical rename + CI fix. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
44 lines
1.0 KiB
Go
44 lines
1.0 KiB
Go
package postgres
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"armature/database"
|
|
)
|
|
|
|
// ── HealthStore ─────────────────────────────
|
|
|
|
type HealthStore struct{}
|
|
|
|
func NewHealthStore() *HealthStore { return &HealthStore{} }
|
|
|
|
// Prune deletes stale kernel data older than the given time.
|
|
// Cleans: expired ws_tickets, old rate_limit_counters, stale presence.
|
|
func (s *HealthStore) Prune(ctx context.Context, before time.Time) (int64, error) {
|
|
var total int64
|
|
|
|
res, _ := database.DB.ExecContext(ctx,
|
|
`DELETE FROM ws_tickets WHERE expires_at < $1`, before)
|
|
if res != nil {
|
|
n, _ := res.RowsAffected()
|
|
total += n
|
|
}
|
|
|
|
res, _ = database.DB.ExecContext(ctx,
|
|
`DELETE FROM rate_limit_counters WHERE window_start < $1`, before)
|
|
if res != nil {
|
|
n, _ := res.RowsAffected()
|
|
total += n
|
|
}
|
|
|
|
res, _ = database.DB.ExecContext(ctx,
|
|
`DELETE FROM user_presence WHERE last_seen < $1 AND status = 'offline'`, before)
|
|
if res != nil {
|
|
n, _ := res.RowsAffected()
|
|
total += n
|
|
}
|
|
|
|
return total, nil
|
|
}
|