Skip to content

Commit

Permalink
Inline TimeFunctionOperatorFactory
Browse files Browse the repository at this point in the history
Signed-off-by: Jon Kartago Lamida <[email protected]>
  • Loading branch information
lamida committed Jan 28, 2025
1 parent 2510116 commit 16843e7
Showing 1 changed file with 21 additions and 25 deletions.
46 changes: 21 additions & 25 deletions pkg/streamingpromql/functions.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,27 @@ func SingleInputVectorFunctionOperatorFactory(name string, f functions.FunctionO
}
}

func TimeFunctionOperatorFactory(name string, f functions.FunctionOverInstantVectorDefinition) InstantVectorFunctionOperatorFactory {
// InstantVectorTransformationFunctionOperatorFactory creates an InstantVectorFunctionOperatorFactory for functions
// that have exactly 1 argument (v instant-vector), and drop the series __name__ label.
//
// Parameters:
// - name: The name of the function
// - seriesDataFunc: The function to handle series data
func InstantVectorTransformationFunctionOperatorFactory(name string, seriesDataFunc functions.InstantVectorSeriesFunction) InstantVectorFunctionOperatorFactory {
f := functions.FunctionOverInstantVectorDefinition{
SeriesDataFunc: seriesDataFunc,
SeriesMetadataFunction: functions.DropSeriesName,
}

return SingleInputVectorFunctionOperatorFactory(name, f)
}

func TimeTransformationFunctionOperatorFactory(name string, seriesDataFunc functions.InstantVectorSeriesFunction) InstantVectorFunctionOperatorFactory {
f := functions.FunctionOverInstantVectorDefinition{
SeriesDataFunc: seriesDataFunc,
SeriesMetadataFunction: functions.DropSeriesName,
}

return func(args []types.Operator, memoryConsumptionTracker *limiting.MemoryConsumptionTracker, _ *annotations.Annotations, expressionPosition posrange.PositionRange, timeRange types.QueryTimeRange) (types.InstantVectorOperator, error) {
if len(args) > 1 {
// Should be caught by the PromQL parser, but we check here for safety.
Expand Down Expand Up @@ -92,30 +112,6 @@ func TimeFunctionOperatorFactory(name string, f functions.FunctionOverInstantVec
}
}

// InstantVectorTransformationFunctionOperatorFactory creates an InstantVectorFunctionOperatorFactory for functions
// that have exactly 1 argument (v instant-vector), and drop the series __name__ label.
//
// Parameters:
// - name: The name of the function
// - seriesDataFunc: The function to handle series data
func InstantVectorTransformationFunctionOperatorFactory(name string, seriesDataFunc functions.InstantVectorSeriesFunction) InstantVectorFunctionOperatorFactory {
f := functions.FunctionOverInstantVectorDefinition{
SeriesDataFunc: seriesDataFunc,
SeriesMetadataFunction: functions.DropSeriesName,
}

return SingleInputVectorFunctionOperatorFactory(name, f)
}

func TimeTransformationFunctionOperatorFactory(name string, seriesDataFunc functions.InstantVectorSeriesFunction) InstantVectorFunctionOperatorFactory {
f := functions.FunctionOverInstantVectorDefinition{
SeriesDataFunc: seriesDataFunc,
SeriesMetadataFunction: functions.DropSeriesName,
}

return TimeFunctionOperatorFactory(name, f)
}

// InstantVectorLabelManipulationFunctionOperatorFactory creates an InstantVectorFunctionOperator for functions
// that have exactly 1 argument (v instant-vector), and need to manipulate the labels of
// each series without manipulating the returned samples.
Expand Down

0 comments on commit 16843e7

Please sign in to comment.