timoth-y/kicksware-api

View on GitHub
services/products/usecase/serializer/json/serializer.go

Summary

Maintainability
A
0 mins
Test Coverage
package json

import (
    "encoding/json"

    "github.com/pkg/errors"

    "go.kicksware.com/api/services/products/core/model"
    "go.kicksware.com/api/services/products/core/service"
)

type serializer struct{}

func NewSerializer() service.SneakerProductSerializer {
    return &serializer{}
}

func (r *serializer) Decode(input []byte) (product *model.SneakerProduct, err error) {
    if err = json.Unmarshal(input, &product); err != nil {
        return nil, errors.Wrap(err, "serializer.SneakerProduct.Decode")
    }
    return
}

func (r *serializer) DecodeRange(input []byte) (products []*model.SneakerProduct, err error) {
    if err = json.Unmarshal(input, &products); err != nil {
        return nil, errors.Wrap(err, "serializer.SneakerProduct.DecodeRange")
    }
    return
}

func (r *serializer) DecodeMap(input []byte) (map[string]interface{}, error) {
    queryMap := make(map[string]interface{})
    if err := json.Unmarshal(input, &queryMap); err != nil {
        return nil, errors.Wrap(err, "serializer.SneakerProduct.Decode")
    }
    return queryMap, nil
}

func (r *serializer) DecodeInto(input []byte, target interface{}) error  {
    if err := json.Unmarshal(input, target); err != nil {
        return errors.Wrap(err, "serializer.SneakerProduct.DecodeInto")
    }
    return nil
}

func (r *serializer) Encode(input interface{}) ([]byte, error) {
    raw, err := json.Marshal(input)
    if err != nil {
        return nil, errors.Wrap(err, "serializer.SneakerProduct.Encode")
    }
    return raw, nil
}