diff options
author | Michael Muré <batolettre@gmail.com> | 2022-12-22 00:48:00 +0100 |
---|---|---|
committer | Michael Muré <batolettre@gmail.com> | 2022-12-22 00:48:00 +0100 |
commit | d65e8837aa7bb1a6abb6892b9f2664e1b7edb02e (patch) | |
tree | 331b05b689182b4d2bf43fd7cf92ca03b055bff0 /entities/bug | |
parent | 9b98fc06489353053564b431ac0c0d73a5c55a56 (diff) | |
download | git-bug-d65e8837aa7bb1a6abb6892b9f2664e1b7edb02e.tar.gz |
cache: generic withSnapshot, some cleanup
Diffstat (limited to 'entities/bug')
-rw-r--r-- | entities/bug/snapshot.go | 4 | ||||
-rw-r--r-- | entities/bug/with_snapshot.go | 53 |
2 files changed, 4 insertions, 53 deletions
diff --git a/entities/bug/snapshot.go b/entities/bug/snapshot.go index 333fe207..5c260d85 100644 --- a/entities/bug/snapshot.go +++ b/entities/bug/snapshot.go @@ -43,6 +43,10 @@ func (snap *Snapshot) AllOperations() []dag.Operation { return snap.Operations } +func (snap *Snapshot) AppendOperation(op dag.Operation) { + snap.Operations = append(snap.Operations, op) +} + // EditTime returns the last time a bug was modified func (snap *Snapshot) EditTime() time.Time { if len(snap.Operations) == 0 { diff --git a/entities/bug/with_snapshot.go b/entities/bug/with_snapshot.go deleted file mode 100644 index 0474cac7..00000000 --- a/entities/bug/with_snapshot.go +++ /dev/null @@ -1,53 +0,0 @@ -package bug - -import ( - "github.com/MichaelMure/git-bug/repository" -) - -var _ Interface = &WithSnapshot{} - -// WithSnapshot encapsulate a Bug and maintain the corresponding Snapshot efficiently -type WithSnapshot struct { - *Bug - snap *Snapshot -} - -func (b *WithSnapshot) Compile() *Snapshot { - if b.snap == nil { - snap := b.Bug.Compile() - b.snap = snap - } - return b.snap -} - -// Append intercept Bug.Append() to update the snapshot efficiently -func (b *WithSnapshot) Append(op Operation) { - b.Bug.Append(op) - - if b.snap == nil { - return - } - - op.Apply(b.snap) - b.snap.Operations = append(b.snap.Operations, op) -} - -// Commit intercept Bug.Commit() to update the snapshot efficiently -func (b *WithSnapshot) Commit(repo repository.ClockedRepo) error { - err := b.Bug.Commit(repo) - - if err != nil { - b.snap = nil - return err - } - - // Commit() shouldn't change anything of the bug state apart from the - // initial ID set - - if b.snap == nil { - return nil - } - - b.snap.id = b.Bug.Id() - return nil -} |