From d12334a61c242a2cecdd2cdb5a532a282184a3d9 Mon Sep 17 00:00:00 2001
From: Semyon Krestyaninov <ensiouel@gmail.com>
Date: Thu, 15 Feb 2024 13:39:12 +0300
Subject: [PATCH] refactor

---
 log/zap/filter_core.go      | 13 ++++++++++++-
 log/zap/filter_core_test.go | 20 +++++---------------
 2 files changed, 17 insertions(+), 16 deletions(-)

diff --git a/log/zap/filter_core.go b/log/zap/filter_core.go
index e1049447..43e5e6bd 100644
--- a/log/zap/filter_core.go
+++ b/log/zap/filter_core.go
@@ -7,6 +7,17 @@ import (
 
 type FilterFunc func(entry zapcore.Entry, fields []zapcore.Field) bool
 
+func FilterField(field zapcore.Field) FilterFunc {
+	return func(entry zapcore.Entry, fields []zapcore.Field) bool {
+		for _, f := range fields {
+			if f.Equals(field) {
+				return true
+			}
+		}
+		return false
+	}
+}
+
 type filterCore struct {
 	zapcore.Core
 
@@ -14,7 +25,7 @@ type filterCore struct {
 	fields  []zap.Field
 }
 
-func NewFilterCore(core zapcore.Core, filters ...FilterFunc) zapcore.Core {
+func RegisterFilters(core zapcore.Core, filters ...FilterFunc) zapcore.Core {
 	return &filterCore{
 		Core:    core,
 		filters: filters,
diff --git a/log/zap/filter_core_test.go b/log/zap/filter_core_test.go
index f4e12b87..21197975 100644
--- a/log/zap/filter_core_test.go
+++ b/log/zap/filter_core_test.go
@@ -11,25 +11,15 @@ import (
 
 func TestFilterCore_Write(t *testing.T) {
 	core, logs := observer.New(zapcore.InfoLevel)
-	core = NewFilterCore(core, func(entry zapcore.Entry, fields []zapcore.Field) bool {
-		enc := zapcore.NewMapObjectEncoder()
-		for _, field := range fields {
-			field.AddTo(enc)
-		}
-		check, _ := enc.Fields["check"].(bool)
-		return check
-	})
+	core = RegisterFilters(core, FilterField(zap.Bool("check", true)))
 
-	{
-		err := core.With([]zapcore.Field{zap.Bool("check", true)}).
-			Write(zapcore.Entry{Message: "check true"}, nil)
-		require.NoError(t, err)
-	}
+	err := core.With([]zapcore.Field{zap.Bool("check", true)}).Write(zapcore.Entry{Message: "msg"}, nil)
+	require.NoError(t, err)
 
-	err := core.Write(zapcore.Entry{Message: "check true"}, []zapcore.Field{zap.Bool("check", true)})
+	err = core.Write(zapcore.Entry{Message: "msg"}, []zapcore.Field{zap.Bool("check", true)})
 	require.NoError(t, err)
 
-	err = core.Write(zapcore.Entry{Message: "check false"}, nil)
+	err = core.Write(zapcore.Entry{Message: "msg"}, nil)
 	require.NoError(t, err)
 
 	require.Equal(t, 2, logs.Len())
-- 
GitLab