github.com/yankunsam/loki/v2@v2.6.3-0.20220817130409-389df5235c27/pkg/util/deletion/deletion.go (about) 1 package deletion 2 3 import ( 4 "github.com/grafana/loki/pkg/logproto" 5 "github.com/grafana/loki/pkg/logql" 6 "github.com/grafana/loki/pkg/logql/log" 7 "github.com/grafana/loki/pkg/logql/syntax" 8 ) 9 10 func SetupPipeline(req logql.SelectLogParams, p log.Pipeline) (log.Pipeline, error) { 11 if len(req.Deletes) == 0 { 12 return p, nil 13 } 14 15 filters, err := deleteFilters(req.Deletes) 16 if err != nil { 17 return nil, err 18 } 19 20 return log.NewFilteringPipeline(filters, p), nil 21 } 22 23 func SetupExtractor(req logql.SelectSampleParams, se log.SampleExtractor) (log.SampleExtractor, error) { 24 if len(req.Deletes) == 0 { 25 return se, nil 26 } 27 28 filters, err := deleteFilters(req.Deletes) 29 if err != nil { 30 return nil, err 31 } 32 33 return log.NewFilteringSampleExtractor(filters, se), nil 34 } 35 36 func deleteFilters(deletes []*logproto.Delete) ([]log.PipelineFilter, error) { 37 var filters []log.PipelineFilter 38 for _, d := range deletes { 39 expr, err := syntax.ParseLogSelector(d.Selector, true) 40 if err != nil { 41 return nil, err 42 } 43 44 pipeline, err := expr.Pipeline() 45 if err != nil { 46 return nil, err 47 } 48 49 filters = append(filters, log.PipelineFilter{ 50 Start: d.Start, 51 End: d.End, 52 Matchers: expr.Matchers(), 53 Pipeline: pipeline, 54 }) 55 } 56 57 return filters, nil 58 }