github.com/timoth-y/kicksware-api/order-service@v0.0.0-20201002192818-87b546a7ae5a/usecase/serializer/json/serializer.go (about)

     1  package json
     2  
     3  import (
     4  	"encoding/json"
     5  
     6  	"github.com/pkg/errors"
     7  
     8  	"github.com/timoth-y/kicksware-api/order-service/core/model"
     9  	"github.com/timoth-y/kicksware-api/order-service/core/service"
    10  )
    11  
    12  type serializer struct{}
    13  
    14  func NewSerializer() service.OrderSerializer {
    15  	return &serializer{}
    16  }
    17  
    18  func (r *serializer) Decode(input []byte) (ref *model.Order, err error) {
    19  	if err = json.Unmarshal(input, &ref); err != nil {
    20  		return nil, errors.Wrap(err, "serializer.Order.Decode")
    21  	}
    22  	return
    23  }
    24  
    25  func (r *serializer) DecodeRange(input []byte) (refs []*model.Order, err error) {
    26  	if err = json.Unmarshal(input, &refs); err != nil {
    27  		return nil, errors.Wrap(err, "serializer.Order.DecodeRange")
    28  	}
    29  	return
    30  }
    31  
    32  func (r *serializer) DecodeMap(input []byte) (map[string]interface{}, error) {
    33  	queryMap := make(map[string]interface{})
    34  	if err := json.Unmarshal(input, &queryMap); err != nil {
    35  		return nil, errors.Wrap(err, "serializer.Order.DecodeRange")
    36  	}
    37  	return queryMap, nil
    38  }
    39  
    40  func (r *serializer) DecodeInto(input []byte, target interface{}) error  {
    41  	if err := json.Unmarshal(input, target); err != nil {
    42  		return errors.Wrap(err, "serializer.Order.DecodeInto")
    43  	}
    44  	return nil
    45  }
    46  
    47  func (r *serializer) Encode(input interface{}) ([]byte, error) {
    48  	raw, err := json.Marshal(input)
    49  	if err != nil {
    50  		return nil, errors.Wrap(err, "serializer.Order.Encode")
    51  	}
    52  	return raw, nil
    53  }