add time to comments

Michael Muré created

Change summary

bug/comment.go                |  6 ++++++
bug/operations/add_comment.go | 12 +++++++++---
bug/operations/create.go      |  4 ++++
bug/operations/create_test.go |  4 ++--
4 files changed, 21 insertions(+), 5 deletions(-)

Detailed changes

bug/comment.go 🔗

@@ -1,6 +1,12 @@
 package bug
 
+import "time"
+
 type Comment struct {
 	Author  Person
 	Message string
+
+	// Creation time of the comment.
+	// Should be used only for human display, never for ordering as we can't rely on it in a distributed system.
+	Time time.Time
 }

bug/operations/add_comment.go 🔗

@@ -1,13 +1,17 @@
 package operations
 
-import "github.com/MichaelMure/git-bug/bug"
+import (
+	"github.com/MichaelMure/git-bug/bug"
+	"time"
+)
 
 var _ bug.Operation = AddCommentOperation{}
 
 type AddCommentOperation struct {
 	bug.OpBase
-	Message string     `json:"m"`
-	Author  bug.Person `json:"a"`
+	Message string
+	Author  bug.Person
+	Time    time.Time
 }
 
 func NewAddCommentOp(author bug.Person, message string) AddCommentOperation {
@@ -15,6 +19,7 @@ func NewAddCommentOp(author bug.Person, message string) AddCommentOperation {
 		OpBase:  bug.OpBase{OperationType: bug.ADD_COMMENT},
 		Message: message,
 		Author:  author,
+		Time:    time.Now(),
 	}
 }
 
@@ -22,6 +27,7 @@ func (op AddCommentOperation) Apply(snapshot bug.Snapshot) bug.Snapshot {
 	comment := bug.Comment{
 		Message: op.Message,
 		Author:  op.Author,
+		Time:    op.Time,
 	}
 
 	snapshot.Comments = append(snapshot.Comments, comment)

bug/operations/create.go 🔗

@@ -3,6 +3,7 @@ package operations
 import (
 	"github.com/MichaelMure/git-bug/bug"
 	"reflect"
+	"time"
 )
 
 // CreateOperation define the initial creation of a bug
@@ -14,6 +15,7 @@ type CreateOperation struct {
 	Title   string
 	Message string
 	Author  bug.Person
+	Time    time.Time
 }
 
 func NewCreateOp(author bug.Person, title, message string) CreateOperation {
@@ -22,6 +24,7 @@ func NewCreateOp(author bug.Person, title, message string) CreateOperation {
 		Title:   title,
 		Message: message,
 		Author:  author,
+		Time:    time.Now(),
 	}
 }
 
@@ -37,6 +40,7 @@ func (op CreateOperation) Apply(snapshot bug.Snapshot) bug.Snapshot {
 		{
 			Message: op.Message,
 			Author:  op.Author,
+			Time:    op.Time,
 		},
 	}
 	return snapshot

bug/operations/create_test.go 🔗

@@ -21,11 +21,11 @@ func TestCreate(t *testing.T) {
 	expected := bug.Snapshot{
 		Title: "title",
 		Comments: []bug.Comment{
-			{Author: rene, Message: "message"},
+			{Author: rene, Message: "message", Time: create.Time},
 		},
 	}
 
 	if !reflect.DeepEqual(snapshot, expected) {
-		t.Fail()
+		t.Fatalf("%s different than %s", snapshot, expected)
 	}
 }