From 8f211930187467428f457f25228357a9f5e108d0 Mon Sep 17 00:00:00 2001 From: lorenzoranucci Date: Sat, 12 Nov 2022 14:07:38 +0100 Subject: [PATCH] segregate serializer interface --- cmd/run.go | 3 ++- internal/app/run/event_handler.go | 18 ++++++++++++------ internal/pkg/string/event_key_serializer.go | 12 ++++++++++++ internal/pkg/string/event_serializer.go | 8 ++------ 4 files changed, 28 insertions(+), 13 deletions(-) create mode 100644 internal/pkg/string/event_key_serializer.go diff --git a/cmd/run.go b/cmd/run.go index c5fa147..0b771e8 100644 --- a/cmd/run.go +++ b/cmd/run.go @@ -30,7 +30,8 @@ var runCmd = &cobra.Command{ } handler, err := run.NewEventHandler( getRedisStateHandler(), - &string2.Serializer{}, + &string2.EventSerializer{}, + &string2.EventKeySerializer{}, ed, ) if err != nil { diff --git a/internal/app/run/event_handler.go b/internal/app/run/event_handler.go index aee7569..26c9d97 100644 --- a/internal/app/run/event_handler.go +++ b/internal/app/run/event_handler.go @@ -6,7 +6,8 @@ import ( func NewEventHandler( stateHandler StateHandler, - rowEventSerializer EventSerializer, + eventSerializer EventSerializer, + eventKeySerializer EventKeySerializer, eventDispatcher EventDispatcher, ) (*EventHandler, error) { lastPositionRead, err := stateHandler.GetLastPositionRead() @@ -16,7 +17,8 @@ func NewEventHandler( return &EventHandler{ stateHandler: stateHandler, - rowEventSerializer: rowEventSerializer, + eventSerializer: eventSerializer, + eventKeySerializer: eventKeySerializer, eventDispatcher: eventDispatcher, lastPositionRead: lastPositionRead, }, nil @@ -26,7 +28,8 @@ type EventHandler struct { canal.DummyEventHandler stateHandler StateHandler - rowEventSerializer EventSerializer + eventSerializer EventSerializer + eventKeySerializer EventKeySerializer eventDispatcher EventDispatcher lastPositionRead uint32 } @@ -37,10 +40,13 @@ type StateHandler interface { } type EventSerializer interface { - SerializeKey(e *canal.RowsEvent) (interface{}, error) SerializeMessage(e *canal.RowsEvent) (interface{}, error) } +type EventKeySerializer interface { + SerializeKey(e *canal.RowsEvent) (interface{}, error) +} + type EventDispatcher interface { Dispatch(routingKey interface{}, message interface{}) error } @@ -50,12 +56,12 @@ func (h *EventHandler) OnRow(e *canal.RowsEvent) error { return nil } - k, err := h.rowEventSerializer.SerializeKey(e) + k, err := h.eventKeySerializer.SerializeKey(e) if err != nil { return err } - m, err := h.rowEventSerializer.SerializeMessage(e) + m, err := h.eventSerializer.SerializeMessage(e) if err != nil { return err } diff --git a/internal/pkg/string/event_key_serializer.go b/internal/pkg/string/event_key_serializer.go new file mode 100644 index 0000000..fa17130 --- /dev/null +++ b/internal/pkg/string/event_key_serializer.go @@ -0,0 +1,12 @@ +package string + +import ( + "github.com/go-mysql-org/go-mysql/canal" +) + +type EventKeySerializer struct { +} + +func (j *EventKeySerializer) SerializeKey(e *canal.RowsEvent) (interface{}, error) { + return "", nil +} diff --git a/internal/pkg/string/event_serializer.go b/internal/pkg/string/event_serializer.go index 067f3f9..1fc0b24 100644 --- a/internal/pkg/string/event_serializer.go +++ b/internal/pkg/string/event_serializer.go @@ -6,13 +6,9 @@ import ( "github.com/go-mysql-org/go-mysql/canal" ) -type Serializer struct { +type EventSerializer struct { } -func (j *Serializer) SerializeKey(e *canal.RowsEvent) (interface{}, error) { - return "", nil -} - -func (j *Serializer) SerializeMessage(e *canal.RowsEvent) (interface{}, error) { +func (j *EventSerializer) SerializeMessage(e *canal.RowsEvent) (interface{}, error) { return fmt.Sprintf("%v", e.Rows), nil }