aboutsummaryrefslogtreecommitdiffstats
path: root/bug/operations/create.go
diff options
context:
space:
mode:
authorMichael Muré <batolettre@gmail.com>2018-07-12 21:31:41 +0200
committerMichael Muré <batolettre@gmail.com>2018-07-12 21:32:11 +0200
commite02294c8f372156945bbc43d70d4d36a07a3fbcf (patch)
treeec928f35309280db8ec6f03640b9b6b2ac3caad6 /bug/operations/create.go
parent3aecdf2c2da9017513ca04a183089099fb3677d5 (diff)
downloadgit-bug-e02294c8f372156945bbc43d70d4d36a07a3fbcf.tar.gz
add the first 2 operations
Diffstat (limited to 'bug/operations/create.go')
-rw-r--r--bug/operations/create.go45
1 files changed, 45 insertions, 0 deletions
diff --git a/bug/operations/create.go b/bug/operations/create.go
new file mode 100644
index 00000000..f004a12b
--- /dev/null
+++ b/bug/operations/create.go
@@ -0,0 +1,45 @@
+package operations
+
+import (
+ "github.com/MichaelMure/git-bug/bug"
+ "reflect"
+)
+
+// CreateOperation define the initial creation of a bug
+
+var _ Operation = CreateOperation{}
+
+type CreateOperation struct {
+ Title string
+ Message string
+ Author bug.Person
+}
+
+func NewCreateOp(author bug.Person, title, message string) CreateOperation {
+ return CreateOperation{
+ Title: title,
+ Message: message,
+ Author: author,
+ }
+}
+
+func (op CreateOperation) OpType() OperationType {
+ return CREATE
+}
+
+func (op CreateOperation) Apply(snapshot bug.Snapshot) bug.Snapshot {
+ empty := bug.Snapshot{}
+
+ if !reflect.DeepEqual(snapshot, empty) {
+ panic("Create operation should never be applied on a non-empty snapshot")
+ }
+
+ snapshot.Title = op.Title
+ snapshot.Comments = []bug.Comment{
+ {
+ Message: op.Message,
+ Author: op.Author,
+ },
+ }
+ return snapshot
+}