MCPcopy Create free account
hub / github.com/crossjoin-io/crossjoin / Tick

Method Tick

api/timer.go:9–40  ·  view source on GitHub ↗
(now time.Time)

Source from the content-addressed store, hash-verified

7)
8
9func (api *API) Tick(now time.Time) error {
10 datasets, err := api.ReadDatasets()
11 if err != nil {
12 return err
13 }
14
15 hash, err := api.LatestConfigHash()
16 if err != nil {
17 return fmt.Errorf("read latest config hash: %w", err)
18 }
19
20 // refresh datasets
21 for _, dataset := range datasets {
22 if dataset.Refresh != nil {
23 dur, err := time.ParseDuration(dataset.Refresh.Interval)
24 if err != nil {
25 return fmt.Errorf("parse refresh interval: %w", err)
26 }
27
28 if lastRefresh, ok := api.lastRefresh.Load(dataset.ID); !ok || lastRefresh.(time.Time).Before(now.Add(-dur)) {
29 log.Println("refreshing", dataset.ID)
30 err = api.refreshDataset(hash, dataset.ID)
31 if err != nil {
32 return fmt.Errorf("refreshing %s: %w", dataset.ID, err)
33 }
34 api.lastRefresh.Store(dataset.ID, now)
35 }
36 }
37 }
38
39 return nil
40}

Callers 1

NewAPIFunction · 0.95

Calls 3

ReadDatasetsMethod · 0.95
LatestConfigHashMethod · 0.95
refreshDatasetMethod · 0.95

Tested by

no test coverage detected