@@ -15,43 +15,40 @@ const (
1515 stepBatch = 10
1616)
1717
18- func LogicalPlanGenMiddleware (enablePerStepStats bool , lookBackDelta time.Duration ) Middleware {
18+ func DistributedQueryMiddleware (enablePerStepStats bool , lookBackDelta time.Duration ) Middleware {
1919 return MiddlewareFunc (func (next Handler ) Handler {
20- return logicalPlanGen {
20+ return distributedQueryMiddleware {
2121 next : next ,
2222 enablePerStepStats : enablePerStepStats ,
2323 lookBackDelta : lookBackDelta ,
2424 }
2525 })
2626}
2727
28- type logicalPlanGen struct {
28+ func getStartAndEnd (start time.Time , end time.Time , step time.Duration ) (time.Time , time.Time ) {
29+ if step == 0 {
30+ return start , start
31+ }
32+ return start , end
33+ }
34+
35+ type distributedQueryMiddleware struct {
2936 next Handler
3037 enablePerStepStats bool
3138 lookBackDelta time.Duration
3239}
3340
34- func (l logicalPlanGen ) NewLogicalPlan (qs string , start time.Time , end time.Time , step time.Duration ) (* logicalplan.Plan , error ) {
41+ func (d distributedQueryMiddleware ) newLogicalPlan (qs string , start time.Time , end time.Time , step time.Duration ) (* logicalplan.Plan , error ) {
3542
36- qOpts := query.Options {}
37- if step == 0 {
38- qOpts = query.Options {
39- Start : start ,
40- End : start ,
41- Step : 0 ,
42- StepsBatch : stepBatch ,
43- LookbackDelta : l .lookBackDelta ,
44- EnablePerStepStats : l .enablePerStepStats ,
45- }
46- } else {
47- qOpts = query.Options {
48- Start : start ,
49- End : end ,
50- Step : step ,
51- StepsBatch : stepBatch ,
52- LookbackDelta : l .lookBackDelta ,
53- EnablePerStepStats : l .enablePerStepStats ,
54- }
43+ start , end = getStartAndEnd (start , end , step )
44+
45+ qOpts := query.Options {
46+ Start : start ,
47+ End : end ,
48+ Step : step ,
49+ StepsBatch : stepBatch ,
50+ LookbackDelta : d .lookBackDelta ,
51+ EnablePerStepStats : d .enablePerStepStats ,
5552 }
5653
5754 expr , err := parser .NewParser (qs , parser .WithFunctions (parser .Functions )).ParseExpr ()
@@ -71,7 +68,7 @@ func (l logicalPlanGen) NewLogicalPlan(qs string, start time.Time, end time.Time
7168 return & optimizedPlan , nil
7269}
7370
74- func (l logicalPlanGen ) Do (ctx context.Context , r Request ) (Response , error ) {
71+ func (d distributedQueryMiddleware ) Do (ctx context.Context , r Request ) (Response , error ) {
7572 promReq , ok := r .(* PrometheusRequest )
7673 if ! ok {
7774 return nil , httpgrpc .Errorf (http .StatusBadRequest , "invalid request format" )
@@ -83,12 +80,12 @@ func (l logicalPlanGen) Do(ctx context.Context, r Request) (Response, error) {
8380
8481 var err error
8582
86- newLogicalPlan , err := l . NewLogicalPlan (promReq .Query , startTime , endTime , step )
83+ newLogicalPlan , err := d . newLogicalPlan (promReq .Query , startTime , endTime , step )
8784 if err != nil {
8885 return nil , err
8986 }
9087
9188 promReq .LogicalPlan = * newLogicalPlan
9289
93- return l .next .Do (ctx , r )
90+ return d .next .Do (ctx , r )
9491}
0 commit comments