diff --git a/logs/log_test.go b/logs/log_test.go index 1816cb9ff8e9222784623acd87593c6ef0bb3acf..6cf494209767ad0bb9f466150cdfe0a435f11935 100644 --- a/logs/log_test.go +++ b/logs/log_test.go @@ -5,6 +5,7 @@ import ( "time" "git.perx.ru/perxis/perxis-go/id" + pb "git.perx.ru/perxis/perxis-go/proto/logs" "github.com/stretchr/testify/assert" ) @@ -64,3 +65,23 @@ func TestEntry_ToMap(t *testing.T) { }) } } + +func TestFindRequest(t *testing.T) { + t.Run("From PB", func(t *testing.T) { + res := FindRequestFromPB(&pb.FindRequest{ + Filter: nil, + Options: &pb.FindOptions{}, + }) + assert.True(t, res.Options.From.IsZero()) + assert.True(t, res.Options.To.IsZero()) + }) + t.Run("To PB", func(t *testing.T) { + res := FindRequestToPB(&FindRequest{ + Filter: nil, + Options: &FindOptions{}, + }) + assert.False(t, res.Options.From.IsValid()) + assert.False(t, res.Options.To.IsValid()) + }) + +} diff --git a/logs/service.go b/logs/service.go index fe92b160dacc80e3cc978dc1f1e409855adde98f..9740090458c2e8efd64c406629e0e728b142d54c 100644 --- a/logs/service.go +++ b/logs/service.go @@ -155,31 +155,46 @@ func FindRequestFromPB(request *pb.FindRequest) *FindRequest { } // FindOptionsToPB перевод в proto представление FindOptions -func FindOptionsToPB(result *FindOptions) *pb.FindOptions { - if result == nil { +func FindOptionsToPB(opts *FindOptions) *pb.FindOptions { + if opts == nil { return nil } - return &pb.FindOptions{ - Sort: result.Sort, - Fields: result.Fields, - ExcludeFields: result.ExcludeFields, - Limit: int32(result.Limit), - From: timestamppb.New(result.From), - To: timestamppb.New(result.To), + + res := &pb.FindOptions{ + Sort: opts.Sort, + Fields: opts.Fields, + ExcludeFields: opts.ExcludeFields, + Limit: int32(opts.Limit), + } + + if !opts.From.IsZero() { + res.From = timestamppb.New(opts.From) + } + + if !opts.To.IsZero() { + res.To = timestamppb.New(opts.To) } + + return res } // FindOptionsFromPB перевод из proto представления FindOptions -func FindOptionsFromPB(result *pb.FindOptions) *FindOptions { - if result == nil { +func FindOptionsFromPB(opts *pb.FindOptions) *FindOptions { + if opts == nil { return nil } - return &FindOptions{ - Sort: result.Sort, - Fields: result.Fields, - ExcludeFields: result.ExcludeFields, - Limit: int(result.Limit), - From: result.From.AsTime(), - To: result.To.AsTime(), + res := &FindOptions{ + Sort: opts.Sort, + Fields: opts.Fields, + ExcludeFields: opts.ExcludeFields, + Limit: int(opts.Limit), + } + + if opts.From.IsValid() { + res.From = opts.From.AsTime() + } + if opts.To.IsValid() { + res.To = opts.To.AsTime() } + return res }