1package dag
 2
 3import (
 4	"fmt"
 5
 6	"golang.org/x/sync/errgroup"
 7
 8	"github.com/MichaelMure/git-bug/repository"
 9)
10
11// ClockLoader is the repository.ClockLoader for Entity
12func ClockLoader(defs ...Definition) repository.ClockLoader {
13	clocks := make([]string, 0, len(defs)*2)
14	for _, def := range defs {
15		clocks = append(clocks, fmt.Sprintf(creationClockPattern, def.Namespace))
16		clocks = append(clocks, fmt.Sprintf(editClockPattern, def.Namespace))
17	}
18
19	return repository.ClockLoader{
20		Clocks: clocks,
21		Witnesser: func(repo repository.ClockedRepo) error {
22			var errG errgroup.Group
23			for _, def := range defs {
24				def := def
25				errG.Go(func() error {
26					return ReadAllClocksNoCheck(def, repo)
27				})
28			}
29			return errG.Wait()
30		},
31	}
32}