crypto_alert_bot/internal/repository/postgresql/alerter_state.go
2026-02-26 16:02:11 +03:00

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
}