diff options
author | Michael Muré <batolettre@gmail.com> | 2018-09-30 17:15:54 +0200 |
---|---|---|
committer | Michael Muré <batolettre@gmail.com> | 2018-09-30 17:15:54 +0200 |
commit | 7f86898ef9a8f9e866835ece3c9824a8edc58036 (patch) | |
tree | 5c5733c9272f3477317935bde6ecb4680276b717 /bug/op_set_status.go | |
parent | d71bb7dd7632780cf5aad5fda84027fa03a9d0f0 (diff) | |
download | git-bug-7f86898ef9a8f9e866835ece3c9824a8edc58036.tar.gz |
bug: use deditated type for all TimelineItem
Diffstat (limited to 'bug/op_set_status.go')
-rw-r--r-- | bug/op_set_status.go | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/bug/op_set_status.go b/bug/op_set_status.go index cdfa25e7..7e9f4314 100644 --- a/bug/op_set_status.go +++ b/bug/op_set_status.go @@ -23,7 +23,22 @@ func (op *SetStatusOperation) Hash() (git.Hash, error) { func (op *SetStatusOperation) Apply(snapshot *Snapshot) { snapshot.Status = op.Status - snapshot.Timeline = append(snapshot.Timeline, op) + + hash, err := op.Hash() + if err != nil { + // Should never error unless a programming error happened + // (covered in OpBase.Validate()) + panic(err) + } + + item := &SetStatusTimelineItem{ + hash: hash, + Author: op.Author, + UnixTime: Timestamp(op.UnixTime), + Status: op.Status, + } + + snapshot.Timeline = append(snapshot.Timeline, item) } func (op *SetStatusOperation) Validate() error { @@ -45,6 +60,17 @@ func NewSetStatusOp(author Person, unixTime int64, status Status) *SetStatusOper } } +type SetStatusTimelineItem struct { + hash git.Hash + Author Person + UnixTime Timestamp + Status Status +} + +func (s SetStatusTimelineItem) Hash() git.Hash { + return s.hash +} + // Convenience function to apply the operation func Open(b Interface, author Person, unixTime int64) error { op := NewSetStatusOp(author, unixTime, OpenStatus) |