package dataframe

import (
	"time"

	"go.skia.org/infra/go/timer"
	"go.skia.org/infra/go/vcsinfo"
	"go.skia.org/infra/perf/go/ptracestore"

	"go.skia.org/infra/go/sklog"
)

var vcs vcsinfo.VCS

// StartWarmer runs a query that extends over the last year of data to keep the
// tiles warm in the disk cache.
func StartWarmer(v vcsinfo.VCS) {
	vcs = v
	go warmer()
}

func warmer() {
	onestep()
	for range time.Tick(time.Hour) {
		onestep()
	}
}

func onestep() {
	defer timer.New("Warmer onestep").Stop()
	end := time.Now()
	begin := time.Now().Add(-365 * 24 * time.Hour)
	colHeaders, commitIDs, skip := getRange(vcs, begin, end, true)
	matches := func(key string) bool {
		return false
	}
	_, err := _new(colHeaders, commitIDs, matches, ptracestore.Default, nil, skip)
	if err != nil {
		sklog.Errorf("Failed building the dataframe while warming: %s", err)
	}

}
