From b8d7ac53c367a4db6b877d67abcc2b15ca5caf0e Mon Sep 17 00:00:00 2001 From: Aleksandr Razumov Date: Sun, 26 Dec 2021 15:35:39 +0300 Subject: [PATCH] refactor(proto): update enum8 --- proto/col_enum8.go | 17 +++++++++++------ query_test.go | 6 +++--- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/proto/col_enum8.go b/proto/col_enum8.go index 76284408..12473301 100644 --- a/proto/col_enum8.go +++ b/proto/col_enum8.go @@ -8,6 +8,9 @@ import ( ) // ColEnum8Auto is inference helper for ColEnum8. +// +// You can set Values and actual enum mapping will be inferred during query +// execution. type ColEnum8Auto struct { t ColumnType @@ -15,11 +18,13 @@ type ColEnum8Auto struct { strToRaw map[string]Enum8 raw ColEnum8 - Str []string + // Values of Enum8. + Values []string } +// Append value to Enum8 column. func (e *ColEnum8Auto) Append(v string) { - e.Str = append(e.Str, v) + e.Values = append(e.Values, v) } func (e *ColEnum8Auto) parse(t ColumnType) error { @@ -69,7 +74,7 @@ func (e *ColEnum8Auto) Infer(t ColumnType) error { } func (e *ColEnum8Auto) Rows() int { - return len(e.Str) + return len(e.Values) } func (e *ColEnum8Auto) DecodeColumn(r *Reader, rows int) error { @@ -81,18 +86,18 @@ func (e *ColEnum8Auto) DecodeColumn(r *Reader, rows int) error { if !ok { return errors.Errorf("unknown enum value %d", v) } - e.Str = append(e.Str, s) + e.Values = append(e.Values, s) } return nil } func (e *ColEnum8Auto) Reset() { e.raw.Reset() - e.Str = e.Str[:0] + e.Values = e.Values[:0] } func (e *ColEnum8Auto) Prepare() error { - for _, v := range e.Str { + for _, v := range e.Values { raw, ok := e.strToRaw[v] if !ok { return errors.Errorf("unknown enum value %s", v) diff --git a/query_test.go b/query_test.go index 5ee4bb97..a7c4a9e6 100644 --- a/query_test.go +++ b/query_test.go @@ -88,7 +88,7 @@ func TestClient_Query(t *testing.T) { require.NoError(t, conn.Do(ctx, createTable), "create table") data := proto.ColEnum8Auto{ - Str: []string{"foo", "bar"}, + Values: []string{"foo", "bar"}, } insertQuery := Query{ Body: "INSERT INTO test_table VALUES", @@ -106,8 +106,8 @@ func TestClient_Query(t *testing.T) { }, } require.NoError(t, conn.Do(ctx, selectData), "select") - require.Equal(t, data.Str, gotData.Str) - t.Log(gotData.Str) + require.Equal(t, data.Values, gotData.Values) + t.Log(gotData.Values) }) t.Run("InsertTuple", func(t *testing.T) { t.Parallel()