2018-07-12 22:31:41 +03:00
|
|
|
package operations
|
|
|
|
|
2018-07-18 01:16:06 +03:00
|
|
|
import (
|
|
|
|
"github.com/MichaelMure/git-bug/bug"
|
|
|
|
)
|
|
|
|
|
|
|
|
// SetTitleOperation will change the title of a bug
|
2018-07-12 22:31:41 +03:00
|
|
|
|
2018-07-13 17:13:40 +03:00
|
|
|
var _ bug.Operation = SetTitleOperation{}
|
2018-07-12 22:31:41 +03:00
|
|
|
|
|
|
|
type SetTitleOperation struct {
|
2018-07-13 22:21:24 +03:00
|
|
|
bug.OpBase
|
2018-09-12 17:57:04 +03:00
|
|
|
Title string `json:"title"`
|
|
|
|
Was string `json:"was"`
|
2018-07-12 22:31:41 +03:00
|
|
|
}
|
|
|
|
|
2018-07-25 22:25:26 +03:00
|
|
|
func (op SetTitleOperation) Apply(snapshot bug.Snapshot) bug.Snapshot {
|
|
|
|
snapshot.Title = op.Title
|
|
|
|
|
|
|
|
return snapshot
|
|
|
|
}
|
|
|
|
|
2018-08-15 23:01:45 +03:00
|
|
|
func NewSetTitleOp(author bug.Person, title string, was string) SetTitleOperation {
|
2018-07-12 22:31:41 +03:00
|
|
|
return SetTitleOperation{
|
2018-07-18 01:16:06 +03:00
|
|
|
OpBase: bug.NewOpBase(bug.SetTitleOp, author),
|
2018-07-13 22:21:24 +03:00
|
|
|
Title: title,
|
2018-08-15 23:01:45 +03:00
|
|
|
Was: was,
|
2018-07-12 22:31:41 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-07-25 22:25:26 +03:00
|
|
|
// Convenience function to apply the operation
|
2018-08-23 20:11:38 +03:00
|
|
|
func SetTitle(b bug.Interface, author bug.Person, title string) {
|
2018-08-15 23:01:45 +03:00
|
|
|
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)
|
2018-07-25 19:01:32 +03:00
|
|
|
b.Append(setTitleOp)
|
|
|
|
}
|