the-algorithm/product-mixer/core/src/main/scala/com/twitter/product_mixer/core/pipeline/product/ProductPipelineBuilderFactory.scala
twitter-team ef4c5eb65e Twitter Recommendation Algorithm
Please note we have force-pushed a new initial commit in order to remove some publicly-available Twitter user information. Note that this process may be required in the future.
2023-03-31 17:36:31 -05:00

40 lines
1.6 KiB
Scala

package com.twitter.product_mixer.core.pipeline.product
import com.twitter.finagle.stats.StatsReceiver
import com.twitter.product_mixer.core.model.marshalling.request.Request
import com.twitter.product_mixer.core.pipeline.PipelineQuery
import com.twitter.product_mixer.core.pipeline.mixer.MixerPipelineBuilderFactory
import com.twitter.product_mixer.core.pipeline.recommendation.RecommendationPipelineBuilderFactory
import com.twitter.product_mixer.core.service.gate_executor.GateExecutor
import com.twitter.product_mixer.core.service.pipeline_execution_logger.PipelineExecutionLogger
import com.twitter.product_mixer.core.service.pipeline_executor.PipelineExecutor
import com.twitter.product_mixer.core.service.pipeline_selector_executor.PipelineSelectorExecutor
import javax.inject.Inject
import javax.inject.Singleton
@Singleton
class ProductPipelineBuilderFactory @Inject() (
gateExecutor: GateExecutor,
pipelineSelectorExecutor: PipelineSelectorExecutor,
pipelineExecutor: PipelineExecutor,
mixerPipelineBuilderFactory: MixerPipelineBuilderFactory,
recommendationPipelineBuilderFactory: RecommendationPipelineBuilderFactory,
statsReceiver: StatsReceiver,
pipelineExecutionLogger: PipelineExecutionLogger) {
def get[
TRequest <: Request,
Query <: PipelineQuery,
Response
]: ProductPipelineBuilder[TRequest, Query, Response] = {
new ProductPipelineBuilder[TRequest, Query, Response](
gateExecutor,
pipelineSelectorExecutor,
pipelineExecutor,
mixerPipelineBuilderFactory,
recommendationPipelineBuilderFactory,
statsReceiver,
pipelineExecutionLogger
)
}
}