From 9fe2f6b365b891bfaf064fdbb22e0c1bf08955ff Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Sun, 6 Aug 2017 21:21:52 +0200 Subject: [PATCH] Setup first tx, error code --- modules/etc/errors.go | 23 +++++++++++++++++++++++ modules/etc/handler.go | 6 ++++++ modules/etc/store.go | 1 + modules/etc/tx.go | 41 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 71 insertions(+) create mode 100644 modules/etc/errors.go create mode 100644 modules/etc/handler.go create mode 100644 modules/etc/store.go create mode 100644 modules/etc/tx.go diff --git a/modules/etc/errors.go b/modules/etc/errors.go new file mode 100644 index 000000000..9eab3cf57 --- /dev/null +++ b/modules/etc/errors.go @@ -0,0 +1,23 @@ +package etc + +import ( + "fmt" + + abci "github.com/tendermint/abci/types" + + "github.com/tendermint/basecoin/errors" +) + +var ( + errMissingData = fmt.Errorf("All tx fields must be filled") + + malformed = abci.CodeType_EncodingError +) + +//nolint +func ErrMissingData() errors.TMError { + return errors.WithCode(errMissingData, malformed) +} +func IsMissingDataErr(err error) bool { + return errors.IsSameError(errMissingData, err) +} diff --git a/modules/etc/handler.go b/modules/etc/handler.go new file mode 100644 index 000000000..e9c06620d --- /dev/null +++ b/modules/etc/handler.go @@ -0,0 +1,6 @@ +package etc + +const ( + // Name of the module for registering it + Name = "etc" +) diff --git a/modules/etc/store.go b/modules/etc/store.go new file mode 100644 index 000000000..825503c2e --- /dev/null +++ b/modules/etc/store.go @@ -0,0 +1 @@ +package etc diff --git a/modules/etc/tx.go b/modules/etc/tx.go new file mode 100644 index 000000000..80dbf4da0 --- /dev/null +++ b/modules/etc/tx.go @@ -0,0 +1,41 @@ +package etc + +import ( + "github.com/tendermint/basecoin" + "github.com/tendermint/go-wire/data" +) + +// nolint +const ( + TypeSet = Name + "/set" + TypeGet = Name + "/get" + TypeRemove = Name + "/remove" + + ByteSet = 0xF0 + ByteGet = 0xF1 + ByteRemove = 0xF2 +) + +func init() { + basecoin.TxMapper. + RegisterImplementation(SetTx{}, TypeSet, ByteSet) +} + +// SetTx sets a key-value pair +type SetTx struct { + Key data.Bytes `json:"key"` + Value data.Bytes `json:"value"` +} + +// Wrap - fulfills TxInner interface +func (t SetTx) Wrap() basecoin.Tx { + return basecoin.Tx{t} +} + +// ValidateBasic makes sure it is valid +func (t SetTx) ValidateBasic() error { + if len(t.Key) == 0 || len(t.Value) == 0 { + return ErrMissingData() + } + return nil +}