33 lines
931 B
Go
33 lines
931 B
Go
package postgresql
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"time"
|
|
)
|
|
|
|
const getLastAlertCheckQuery = `select last_alert_check from alerter_state`
|
|
|
|
// GetLastAlertCheck returns the persisted time of the last completed alert check.
|
|
// Returns zero time if no check has been recorded yet (null in DB).
|
|
func (p *Postgresql) GetLastAlertCheck(ctx context.Context) (time.Time, error) {
|
|
var t *time.Time
|
|
err := p.db.QueryRow(ctx, getLastAlertCheckQuery).Scan(&t)
|
|
if err != nil {
|
|
return time.Time{}, fmt.Errorf("failed to exec getLastAlertCheckQuery: %w", err)
|
|
}
|
|
if t == nil {
|
|
return time.Time{}, nil
|
|
}
|
|
return *t, nil
|
|
}
|
|
|
|
const setLastAlertCheckQuery = `update alerter_state set last_alert_check = $1`
|
|
|
|
func (p *Postgresql) SetLastAlertCheck(ctx context.Context, t time.Time) error {
|
|
_, err := p.db.Exec(ctx, setLastAlertCheckQuery, t)
|
|
if err != nil {
|
|
return fmt.Errorf("failed to exec setLastAlertCheckQuery: %w", err)
|
|
}
|
|
return nil
|
|
}
|