2021-09-09 19:19:29 +03:00
|
|
|
package pipeline
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"context"
|
|
|
|
|
|
|
|
|
|
"github.com/grafana/grafana-plugin-sdk-go/data"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
type ConditionalOutput struct {
|
|
|
|
|
Condition ConditionChecker
|
|
|
|
|
Outputter Outputter
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func NewConditionalOutput(condition ConditionChecker, outputter Outputter) *ConditionalOutput {
|
|
|
|
|
return &ConditionalOutput{Condition: condition, Outputter: outputter}
|
|
|
|
|
}
|
|
|
|
|
|
2021-09-21 21:57:58 +03:00
|
|
|
const OutputTypeConditional = "conditional"
|
|
|
|
|
|
|
|
|
|
func (out *ConditionalOutput) Type() string {
|
|
|
|
|
return OutputTypeConditional
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (out ConditionalOutput) Output(ctx context.Context, vars OutputVars, frame *data.Frame) ([]*ChannelFrame, error) {
|
|
|
|
|
ok, err := out.Condition.CheckCondition(ctx, frame)
|
2021-09-09 19:19:29 +03:00
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
if !ok {
|
|
|
|
|
return nil, nil
|
|
|
|
|
}
|
2021-09-21 21:57:58 +03:00
|
|
|
return out.Outputter.Output(ctx, vars, frame)
|
2021-09-09 19:19:29 +03:00
|
|
|
}
|