resolver.go

 1package identity
 2
 3import (
 4	"github.com/MichaelMure/git-bug/entity"
 5	"github.com/MichaelMure/git-bug/repository"
 6)
 7
 8// Resolver define the interface of an Identity resolver, able to load
 9// an identity from, for example, a repo or a cache.
10type Resolver interface {
11	ResolveIdentity(id entity.Id) (Interface, error)
12}
13
14// SimpleResolver is a Resolver loading Identities directly from a Repo
15type SimpleResolver struct {
16	repo repository.Repo
17}
18
19func NewSimpleResolver(repo repository.Repo) *SimpleResolver {
20	return &SimpleResolver{repo: repo}
21}
22
23func (r *SimpleResolver) ResolveIdentity(id entity.Id) (Interface, error) {
24	return ReadLocal(r.repo, id)
25}
26
27// StubResolver is a Resolver that doesn't load anything, only returning IdentityStub instances
28type StubResolver struct{}
29
30func NewStubResolver() *StubResolver {
31	return &StubResolver{}
32}
33
34func (s *StubResolver) ResolveIdentity(id entity.Id) (Interface, error) {
35	return &IdentityStub{id: id}, nil
36}