diff options
author | Michael Muré <batolettre@gmail.com> | 2018-07-12 21:31:41 +0200 |
---|---|---|
committer | Michael Muré <batolettre@gmail.com> | 2018-07-12 21:32:11 +0200 |
commit | e02294c8f372156945bbc43d70d4d36a07a3fbcf (patch) | |
tree | ec928f35309280db8ec6f03640b9b6b2ac3caad6 /bug/operations/create.go | |
parent | 3aecdf2c2da9017513ca04a183089099fb3677d5 (diff) | |
download | git-bug-e02294c8f372156945bbc43d70d4d36a07a3fbcf.tar.gz |
add the first 2 operations
Diffstat (limited to 'bug/operations/create.go')
-rw-r--r-- | bug/operations/create.go | 45 |
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 +} |