1package cache
2
3import (
4 "github.com/MichaelMure/git-bug/identity"
5)
6
7// IdentityCache is a wrapper around an Identity for caching.
8type IdentityCache struct {
9 *identity.Identity
10 repoCache *RepoCache
11}
12
13func NewIdentityCache(repoCache *RepoCache, id *identity.Identity) *IdentityCache {
14 return &IdentityCache{
15 Identity: id,
16 repoCache: repoCache,
17 }
18}
19
20func (i *IdentityCache) notifyUpdated() error {
21 return i.repoCache.identityUpdated(i.Identity.Id())
22}
23
24func (i *IdentityCache) Mutate(f func(identity.IdentityMutator) identity.IdentityMutator) error {
25 i.Identity.Mutate(f)
26 return i.notifyUpdated()
27}
28
29func (i *IdentityCache) Commit() error {
30 err := i.Identity.Commit(i.repoCache.repo)
31 if err != nil {
32 return err
33 }
34 return i.notifyUpdated()
35}
36
37func (i *IdentityCache) CommitAsNeeded() error {
38 err := i.Identity.CommitAsNeeded(i.repoCache.repo)
39 if err != nil {
40 return err
41 }
42 return i.notifyUpdated()
43}