diff --git a/logs/log_test.go b/logs/log_test.go index 45d8222af6c347bfbc81eb4faa4d001e74b26932..12aa362a1a2ec1b545d458f273ad9b662a579cf2 100644 --- a/logs/log_test.go +++ b/logs/log_test.go @@ -106,4 +106,24 @@ func TestFindResult(t *testing.T) { assert.Equal(t, []string{"timestamp"}, res.Options.Sort) assert.Equal(t, []string{"level"}, res.Options.Fields) }) + t.Run("From PB: with nil filter and options", func(t *testing.T) { + res := FindResultFromPB(&pb.FindResult{Filter: nil, Options: nil}) + assert.NotNil(t, res) + assert.Nil(t, res.Options) + assert.Nil(t, res.Filter) + }) + t.Run("To PB: with nil filter and options", func(t *testing.T) { + res := FindResultToPB(&FindResult{Filter: nil, Options: nil}) + assert.NotNil(t, res) + assert.Nil(t, res.Options) + assert.Nil(t, res.Filter) + }) + t.Run("From PB: nil", func(t *testing.T) { + res := FindResultFromPB(nil) + assert.Nil(t, res) + }) + t.Run("To PB: nil", func(t *testing.T) { + res := FindResultToPB(nil) + assert.Nil(t, res) + }) } diff --git a/logs/service.go b/logs/service.go index 9409b2a4254af36c87ceba81172bcc4d43b18f94..f91fbcc1d8e673ccd7a533778273fa8da7ab3039 100644 --- a/logs/service.go +++ b/logs/service.go @@ -61,6 +61,10 @@ type FindOptions struct { // FindResultToPB перевод в proto представление FindResult func FindResultToPB(result *FindResult) *pb.FindResult { + if result == nil { + return nil + } + findResult := &pb.FindResult{Total: 0} // поле стало deprecated всегда возвращаем 0 entries := make([]*pb.LogEntry, 0, len(result.Entries)) @@ -70,7 +74,7 @@ func FindResultToPB(result *FindResult) *pb.FindResult { findResult.Entries = entries if result.Filter != nil { - findResult.Filter.Q = result.Filter.Q + findResult.Filter = &pb.Filter{Q: result.Filter.Q} } if result.Options != nil { findResult.Options = FindOptionsToPB(result.Options) @@ -89,7 +93,11 @@ func FindResultToPB(result *FindResult) *pb.FindResult { // FindResultFromPB перевод из proto представления FindResult func FindResultFromPB(result *pb.FindResult) *FindResult { - findResult := new(FindResult) + if result == nil { + return nil + } + + findResult := &FindResult{} entries := make([]*Entry, 0, len(result.Entries)) for _, e := range result.Entries { @@ -98,7 +106,7 @@ func FindResultFromPB(result *pb.FindResult) *FindResult { findResult.Entries = entries if result.Filter != nil { - findResult.Filter.Q = result.Filter.Q + findResult.Filter = &Filter{Q: result.Filter.Q} } if result.Options != nil { findResult.Options = FindOptionsFromPB(result.Options)