diff options
Diffstat (limited to 'bug/operation.go')
-rw-r--r-- | bug/operation.go | 73 |
1 files changed, 0 insertions, 73 deletions
diff --git a/bug/operation.go b/bug/operation.go deleted file mode 100644 index a02fc780..00000000 --- a/bug/operation.go +++ /dev/null @@ -1,73 +0,0 @@ -package bug - -import ( - "encoding/json" - "fmt" - - "github.com/MichaelMure/git-bug/entity" - "github.com/MichaelMure/git-bug/entity/dag" -) - -const ( - _ dag.OperationType = iota - CreateOp - SetTitleOp - AddCommentOp - SetStatusOp - LabelChangeOp - EditCommentOp - NoOpOp - SetMetadataOp -) - -// Operation define the interface to fulfill for an edit operation of a Bug -type Operation interface { - dag.Operation - - // Apply the operation to a Snapshot to create the final state - Apply(snapshot *Snapshot) -} - -// make sure that package external operations do conform to our interface -var _ Operation = &dag.NoOpOperation[*Snapshot]{} -var _ Operation = &dag.SetMetadataOperation[*Snapshot]{} - -func operationUnmarshaller(raw json.RawMessage, resolvers entity.Resolvers) (dag.Operation, error) { - var t struct { - OperationType dag.OperationType `json:"type"` - } - - if err := json.Unmarshal(raw, &t); err != nil { - return nil, err - } - - var op dag.Operation - - switch t.OperationType { - case AddCommentOp: - op = &AddCommentOperation{} - case CreateOp: - op = &CreateOperation{} - case EditCommentOp: - op = &EditCommentOperation{} - case LabelChangeOp: - op = &LabelChangeOperation{} - case NoOpOp: - op = &dag.NoOpOperation[*Snapshot]{} - case SetMetadataOp: - op = &dag.SetMetadataOperation[*Snapshot]{} - case SetStatusOp: - op = &SetStatusOperation{} - case SetTitleOp: - op = &SetTitleOperation{} - default: - panic(fmt.Sprintf("unknown operation type %v", t.OperationType)) - } - - err := json.Unmarshal(raw, &op) - if err != nil { - return nil, err - } - - return op, nil -} |