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) AddVersion(version *identity.Version) error {
25	i.Identity.AddVersion(version)
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}