aboutsummaryrefslogtreecommitdiffstats
path: root/bug/op_set_status.go
diff options
context:
space:
mode:
authorMichael Muré <batolettre@gmail.com>2018-09-30 17:15:54 +0200
committerMichael Muré <batolettre@gmail.com>2018-09-30 17:15:54 +0200
commit7f86898ef9a8f9e866835ece3c9824a8edc58036 (patch)
tree5c5733c9272f3477317935bde6ecb4680276b717 /bug/op_set_status.go
parentd71bb7dd7632780cf5aad5fda84027fa03a9d0f0 (diff)
downloadgit-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.go28
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)