Skip to content

Commit

Permalink
refactor(serializer): remove contract (#33)
Browse files Browse the repository at this point in the history
* refactor(serializer): remove contract

* refactor(serializer): remove contract
  • Loading branch information
flc1125 authored Nov 23, 2023
1 parent 7f2130f commit ebe94ee
Show file tree
Hide file tree
Showing 7 changed files with 100 additions and 19 deletions.
8 changes: 4 additions & 4 deletions cache/redis/store.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,16 @@ import (
"context"
"time"

serializerContract "github.com/go-packagist/go-kratos-components/contract"
"github.com/go-packagist/go-kratos-components/contract/cache"
"github.com/go-packagist/go-kratos-components/serializer"
"github.com/go-packagist/go-kratos-components/serializer/json"
"github.com/redis/go-redis/v9"
)

type options struct {
prefix string
redis redis.Cmdable
serializer serializerContract.Serializable
serializer serializer.Serializable
}

func (o *options) setup() {
Expand All @@ -22,7 +22,7 @@ func (o *options) setup() {
}

if o.serializer == nil {
o.serializer = serializer.JsonSerializer
o.serializer = json.Serializer
}
}

Expand All @@ -42,7 +42,7 @@ func Redis(redis redis.Cmdable) Option {
}
}

func Serializer(serializer serializerContract.Serializable) Option {
func Serializer(serializer serializer.Serializable) Option {
return func(o *options) {
o.serializer = serializer
}
Expand Down
30 changes: 30 additions & 0 deletions serializer/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Serializer

## Usage

```go
package serializer_test

import (
"log"

"github.com/go-packagist/go-kratos-components/serializer/json"
)

var j = json.Serializer

func ExampleJSON() {
bytes, err := j.Serialize(map[string]string{
"key": "value",
})
if err != nil {
log.Fatal(err)
}

var dest map[string]string
err = j.Unserialize(bytes, &dest)
if err != nil {
log.Fatal(err)
}
}
```
24 changes: 24 additions & 0 deletions serializer/example_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package serializer_test

import (
"log"

"github.com/go-packagist/go-kratos-components/serializer/json"
)

var j = json.Serializer

func ExampleJSON() {
bytes, err := j.Serialize(map[string]string{
"key": "value",
})
if err != nil {
log.Fatal(err)
}

var dest map[string]string
err = j.Unserialize(bytes, &dest)
if err != nil {
log.Fatal(err)
}
}
10 changes: 3 additions & 7 deletions serializer/json.go → serializer/json/json.go
Original file line number Diff line number Diff line change
@@ -1,19 +1,15 @@
package serializer
package json

import (
"encoding/json"

"github.com/go-packagist/go-kratos-components/contract"
"github.com/go-packagist/go-kratos-components/serializer"
)

var JsonSerializer = newJsonSerializer()
var Serializer serializer.Serializable = &jsonSerializer{}

type jsonSerializer struct{}

func newJsonSerializer() contract.Serializable {
return &jsonSerializer{}
}

func (j *jsonSerializer) Serialize(data interface{}) ([]byte, error) {
return json.Marshal(data)
}
Expand Down
35 changes: 35 additions & 0 deletions serializer/json/json_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package json

import (
"encoding/json"
"testing"

"github.com/stretchr/testify/assert"
)

func TestSerializer(t *testing.T) {
var j1, j2 = Serializer, Serializer

assert.Same(t, j1, j2)

var data = map[string]interface{}{
"foo": "bar",
}

// marshal
bytes1, err := json.Marshal(data)
assert.NoError(t, err)

bytes2, err := j1.Serialize(data)
assert.NoError(t, err)

assert.Equal(t, bytes1, bytes2)

// unmarshal
var dest1, dest2 = make(map[string]interface{}), make(map[string]interface{})
assert.NoError(t, json.Unmarshal(bytes1, &dest1))
assert.NoError(t, j1.Unserialize(bytes1, &dest2))

assert.Equal(t, dest1, dest2)

}
7 changes: 0 additions & 7 deletions serializer/json_test.go

This file was deleted.

5 changes: 4 additions & 1 deletion contract/serializable.go → serializer/serializable.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
package contract
package serializer

type Serializable interface {
// Serialize the given data into bytes.
Serialize(data interface{}) ([]byte, error)

// Unserialize the given bytes into the given data.
Unserialize(src []byte, dest interface{}) error
}

0 comments on commit ebe94ee

Please sign in to comment.