registry/datastore/gcsettings.go (32 lines of code) (raw):

//go:generate mockgen -package mocks -destination mocks/gcsettings.go . GCSettingsStore package datastore import ( "context" "time" "github.com/docker/distribution/registry/datastore/metrics" ) type GCSettingsStore interface { UpdateAllReviewAfterDefaults(ctx context.Context, d time.Duration) (bool, error) } type gcSettingsStore struct { db Queryer } // NewGCSettingsStore builds a new gcSettingsStore. func NewGCSettingsStore(db Queryer) GCSettingsStore { return &gcSettingsStore{db: db} } // UpdateAllReviewAfterDefaults updates all review after defaults, regardless of the event type. Returns a bool to // signal if any rows were updated. func (s *gcSettingsStore) UpdateAllReviewAfterDefaults(ctx context.Context, d time.Duration) (bool, error) { defer metrics.InstrumentQuery("gc_settings_update_all_review_after_defaults")() q := `UPDATE gc_review_after_defaults SET value = make_interval(secs => $1) WHERE value <> make_interval(secs => $1)` res, err := s.db.ExecContext(ctx, q, d.Seconds()) if err != nil { return false, err } n, err := res.RowsAffected() if err != nil { return false, err } return n > 0, nil }