diff options
author | Michael Muré <batolettre@gmail.com> | 2022-08-18 16:03:48 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-18 16:03:48 +0200 |
commit | 6664a251f1893e6ddc183aa6061d6f0fd4f40a57 (patch) | |
tree | e42bcfc39ccf9284f645dde7ae5990c6d4995ade /cache/resolvers.go | |
parent | ec24de3f0d19ff1a56d0b12d389ec1535be43ea2 (diff) | |
parent | 45f5f852b71a63c142bca8b05efe53eebf142594 (diff) | |
download | git-bug-6664a251f1893e6ddc183aa6061d6f0fd4f40a57.tar.gz |
Merge pull request #844 from MichaelMure/resolvers
WIP resolvers
Diffstat (limited to 'cache/resolvers.go')
-rw-r--r-- | cache/resolvers.go | 39 |
1 files changed, 15 insertions, 24 deletions
diff --git a/cache/resolvers.go b/cache/resolvers.go index e53c3660..9ed2fa4c 100644 --- a/cache/resolvers.go +++ b/cache/resolvers.go @@ -2,10 +2,16 @@ package cache import ( "github.com/MichaelMure/git-bug/entity" - "github.com/MichaelMure/git-bug/identity" ) -var _ identity.Resolver = &identityCacheResolver{} +func makeResolvers(cache *RepoCache) entity.Resolvers { + return entity.Resolvers{ + &IdentityCache{}: newIdentityCacheResolver(cache), + &BugCache{}: newBugCacheResolver(cache), + } +} + +var _ entity.Resolver = &identityCacheResolver{} // identityCacheResolver is an identity Resolver that retrieve identities from // the cache @@ -17,35 +23,20 @@ func newIdentityCacheResolver(cache *RepoCache) *identityCacheResolver { return &identityCacheResolver{cache: cache} } -func (i *identityCacheResolver) ResolveIdentity(id entity.Id) (identity.Interface, error) { +func (i *identityCacheResolver) Resolve(id entity.Id) (entity.Interface, error) { return i.cache.ResolveIdentity(id) } -var _ identity.Resolver = &identityCacheResolverNoLock{} +var _ entity.Resolver = &bugCacheResolver{} -// identityCacheResolverNoLock is an identity Resolver that retrieve identities from -// the cache, without locking it. -type identityCacheResolverNoLock struct { +type bugCacheResolver struct { cache *RepoCache } -func newIdentityCacheResolverNoLock(cache *RepoCache) *identityCacheResolverNoLock { - return &identityCacheResolverNoLock{cache: cache} +func newBugCacheResolver(cache *RepoCache) *bugCacheResolver { + return &bugCacheResolver{cache: cache} } -func (ir *identityCacheResolverNoLock) ResolveIdentity(id entity.Id) (identity.Interface, error) { - cached, ok := ir.cache.identities[id] - if ok { - return cached, nil - } - - i, err := identity.ReadLocal(ir.cache.repo, id) - if err != nil { - return nil, err - } - - cached = NewIdentityCache(ir.cache, i) - ir.cache.identities[id] = cached - - return cached, nil +func (b *bugCacheResolver) Resolve(id entity.Id) (entity.Interface, error) { + return b.cache.ResolveBug(id) } |