the-algorithm/product-mixer/core/src/main/scala/com/twitter/product_mixer/core/pipeline/candidate/CandidatePipelineBuilderFactory.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

57 lines
2.1 KiB
Scala

package com.twitter.product_mixer.core.pipeline.candidate
import com.twitter.finagle.stats.StatsReceiver
import com.twitter.product_mixer.core.model.common.UniversalNoun
import com.twitter.product_mixer.core.pipeline.PipelineQuery
import com.twitter.product_mixer.core.service.async_feature_map_executor.AsyncFeatureMapExecutor
import com.twitter.product_mixer.core.service.candidate_decorator_executor.CandidateDecoratorExecutor
import com.twitter.product_mixer.core.service.candidate_feature_hydrator_executor.CandidateFeatureHydratorExecutor
import com.twitter.product_mixer.core.service.candidate_source_executor.CandidateSourceExecutor
import com.twitter.product_mixer.core.service.filter_executor.FilterExecutor
import com.twitter.product_mixer.core.service.gate_executor.GateExecutor
import com.twitter.product_mixer.core.service.group_results_executor.GroupResultsExecutor
import com.twitter.product_mixer.core.service.query_feature_hydrator_executor.QueryFeatureHydratorExecutor
import javax.inject.Inject
import javax.inject.Singleton
@Singleton
class CandidatePipelineBuilderFactory @Inject() (
queryFeatureHydratorExecutor: QueryFeatureHydratorExecutor,
asyncFeatureMapExecutor: AsyncFeatureMapExecutor,
candidateDecoratorExecutor: CandidateDecoratorExecutor,
candidateFeatureHydratorExecutor: CandidateFeatureHydratorExecutor,
candidateSourceExecutor: CandidateSourceExecutor,
groupResultsExecutor: GroupResultsExecutor,
filterExecutor: FilterExecutor,
gateExecutor: GateExecutor,
statsReceiver: StatsReceiver) {
def get[
Query <: PipelineQuery,
CandidateSourceQuery,
CandidateSourceResult,
Result <: UniversalNoun[Any]
]: CandidatePipelineBuilder[
Query,
CandidateSourceQuery,
CandidateSourceResult,
Result
] = {
new CandidatePipelineBuilder[
Query,
CandidateSourceQuery,
CandidateSourceResult,
Result
](
queryFeatureHydratorExecutor,
asyncFeatureMapExecutor,
candidateDecoratorExecutor,
candidateFeatureHydratorExecutor,
candidateSourceExecutor,
groupResultsExecutor,
filterExecutor,
gateExecutor,
statsReceiver
)
}
}