the-algorithm/product-mixer/core/src/main/scala/com/twitter/product_mixer/core/functional_component/configapi/registry/ParamConfigBuilder.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

50 lines
2.6 KiB
Scala

package com.twitter.product_mixer.core.functional_component.configapi.registry
import com.twitter.finagle.stats.StatsReceiver
import com.twitter.logging.Logger
import com.twitter.servo.decider.DeciderGateBuilder
import com.twitter.timelines.configapi.FeatureSwitchOverrideUtil
import com.twitter.timelines.configapi.OptionalOverride
import com.twitter.timelines.configapi.decider.DeciderUtils
trait ParamConfigBuilder { paramConfig: ParamConfig =>
/** Builds a Seq of [[OptionalOverride]]s based on the [[paramConfig]] */
def build(
deciderGateBuilder: DeciderGateBuilder,
statsReceiver: StatsReceiver
): Seq[OptionalOverride[_]] = {
val logger = Logger(classOf[ParamConfig])
DeciderUtils.getBooleanDeciderOverrides(deciderGateBuilder, booleanDeciderOverrides: _*) ++
FeatureSwitchOverrideUtil.getBooleanFSOverrides(booleanFSOverrides: _*) ++
FeatureSwitchOverrideUtil.getOptionalBooleanOverrides(optionalBooleanOverrides: _*) ++
FeatureSwitchOverrideUtil.getEnumFSOverrides(
statsReceiver.scope("enumConversion"),
logger,
enumFSOverrides: _*) ++
FeatureSwitchOverrideUtil.getEnumSeqFSOverrides(
statsReceiver.scope("enumSeqConversion"),
logger,
enumSeqFSOverrides: _*) ++
FeatureSwitchOverrideUtil.getBoundedDurationFSOverrides(boundedDurationFSOverrides: _*) ++
FeatureSwitchOverrideUtil.getBoundedIntFSOverrides(boundedIntFSOverrides: _*) ++
FeatureSwitchOverrideUtil.getBoundedOptionalIntOverrides(boundedOptionalIntOverrides: _*) ++
FeatureSwitchOverrideUtil.getIntSeqFSOverrides(intSeqFSOverrides: _*) ++
FeatureSwitchOverrideUtil.getBoundedLongFSOverrides(boundedLongFSOverrides: _*) ++
FeatureSwitchOverrideUtil.getBoundedOptionalLongOverrides(boundedOptionalLongOverrides: _*) ++
FeatureSwitchOverrideUtil.getLongSeqFSOverrides(longSeqFSOverrides: _*) ++
FeatureSwitchOverrideUtil.getLongSetFSOverrides(longSetFSOverrides: _*) ++
FeatureSwitchOverrideUtil.getBoundedDoubleFSOverrides(boundedDoubleFSOverrides: _*) ++
FeatureSwitchOverrideUtil.getBoundedOptionalDoubleOverrides(
boundedOptionalDoubleOverrides: _*) ++
FeatureSwitchOverrideUtil.getDoubleSeqFSOverrides(doubleSeqFSOverrides: _*) ++
FeatureSwitchOverrideUtil.getStringFSOverrides(stringFSOverrides: _*) ++
FeatureSwitchOverrideUtil.getStringSeqFSOverrides(stringSeqFSOverrides: _*) ++
FeatureSwitchOverrideUtil.getOptionalStringOverrides(optionalStringOverrides: _*) ++
gatedOverrides.flatMap {
case (fsName, overrides) => FeatureSwitchOverrideUtil.gatedOverrides(fsName, overrides: _*)
}.toSeq
}
}