diff options
author | Michael Muré <batolettre@gmail.com> | 2018-08-15 22:01:45 +0200 |
---|---|---|
committer | Michael Muré <batolettre@gmail.com> | 2018-08-15 22:01:45 +0200 |
commit | a47409377417538b7be446a6aa33dae8989cfd9a (patch) | |
tree | 88b52134a0e0818aa03661de0ba55adfa9df1709 /bug/operations/set_title.go | |
parent | cf9e83e74dc5f91b0e13fbdb79848925e68809a3 (diff) | |
download | git-bug-a47409377417538b7be446a6aa33dae8989cfd9a.tar.gz |
bug: add "was" on SetTitleOperation to store what the title was
Diffstat (limited to 'bug/operations/set_title.go')
-rw-r--r-- | bug/operations/set_title.go | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/bug/operations/set_title.go b/bug/operations/set_title.go index fab01d8a..49a270f7 100644 --- a/bug/operations/set_title.go +++ b/bug/operations/set_title.go @@ -11,6 +11,7 @@ var _ bug.Operation = SetTitleOperation{} type SetTitleOperation struct { bug.OpBase Title string + Was string } func (op SetTitleOperation) Apply(snapshot bug.Snapshot) bug.Snapshot { @@ -19,15 +20,33 @@ func (op SetTitleOperation) Apply(snapshot bug.Snapshot) bug.Snapshot { return snapshot } -func NewSetTitleOp(author bug.Person, title string) SetTitleOperation { +func NewSetTitleOp(author bug.Person, title string, was string) SetTitleOperation { return SetTitleOperation{ OpBase: bug.NewOpBase(bug.SetTitleOp, author), Title: title, + Was: was, } } // Convenience function to apply the operation func SetTitle(b *bug.Bug, author bug.Person, title string) { - setTitleOp := NewSetTitleOp(author, title) + it := bug.NewOperationIterator(b) + + var lastTitleOp bug.Operation + for it.Next() { + op := it.Value() + if op.OpType() == bug.SetTitleOp { + lastTitleOp = op + } + } + + var was string + if lastTitleOp != nil { + was = lastTitleOp.(SetTitleOperation).Title + } else { + was = b.FirstOp().(CreateOperation).Title + } + + setTitleOp := NewSetTitleOp(author, title, was) b.Append(setTitleOp) } |