diff options
Diffstat (limited to 'bug/op_noop.go')
-rw-r--r-- | bug/op_noop.go | 77 |
1 files changed, 0 insertions, 77 deletions
diff --git a/bug/op_noop.go b/bug/op_noop.go deleted file mode 100644 index 1b11e694..00000000 --- a/bug/op_noop.go +++ /dev/null @@ -1,77 +0,0 @@ -package bug - -import ( - "encoding/json" - - "github.com/MichaelMure/git-bug/entity" - "github.com/MichaelMure/git-bug/identity" -) - -var _ Operation = &NoOpOperation{} - -// NoOpOperation is an operation that does not change the bug state. It can -// however be used to store arbitrary metadata in the bug history, for example -// to support a bridge feature. -type NoOpOperation struct { - OpBase -} - -func (op *NoOpOperation) Id() entity.Id { - return idOperation(op, &op.OpBase) -} - -func (op *NoOpOperation) Apply(snapshot *Snapshot) { - // Nothing to do -} - -func (op *NoOpOperation) Validate() error { - return op.OpBase.Validate(op, NoOpOp) -} - -// UnmarshalJSON is a two step JSON unmarshalling -// This workaround is necessary to avoid the inner OpBase.MarshalJSON -// overriding the outer op's MarshalJSON -func (op *NoOpOperation) UnmarshalJSON(data []byte) error { - // Unmarshal OpBase and the op separately - - base := OpBase{} - err := json.Unmarshal(data, &base) - if err != nil { - return err - } - - aux := struct{}{} - - err = json.Unmarshal(data, &aux) - if err != nil { - return err - } - - op.OpBase = base - - return nil -} - -// Sign post method for gqlgen -func (op *NoOpOperation) IsAuthored() {} - -func NewNoOpOp(author identity.Interface, unixTime int64) *NoOpOperation { - return &NoOpOperation{ - OpBase: newOpBase(NoOpOp, author, unixTime), - } -} - -// Convenience function to apply the operation -func NoOp(b Interface, author identity.Interface, unixTime int64, metadata map[string]string) (*NoOpOperation, error) { - op := NewNoOpOp(author, unixTime) - - for key, value := range metadata { - op.SetMetadata(key, value) - } - - if err := op.Validate(); err != nil { - return nil, err - } - b.Append(op) - return op, nil -} |