2022-08-04 13:34:30 +02:00
|
|
|
import {
|
|
|
|
IStrategy,
|
|
|
|
IFeatureStrategy,
|
|
|
|
IFeatureStrategyParameters,
|
|
|
|
IStrategyParameter,
|
|
|
|
} from 'interfaces/strategy';
|
|
|
|
|
|
|
|
// Create a new feature strategy with default values from a strategy definition.
|
|
|
|
export const createFeatureStrategy = (
|
|
|
|
featureId: string,
|
|
|
|
strategyDefinition: IStrategy
|
|
|
|
): Omit<IFeatureStrategy, 'id'> => {
|
|
|
|
const parameters: IFeatureStrategyParameters = {};
|
|
|
|
|
|
|
|
strategyDefinition.parameters.forEach((parameter: IStrategyParameter) => {
|
|
|
|
parameters[parameter.name] = createFeatureStrategyParameterValue(
|
|
|
|
featureId,
|
|
|
|
parameter
|
|
|
|
);
|
|
|
|
});
|
|
|
|
|
|
|
|
return {
|
|
|
|
name: strategyDefinition.name,
|
|
|
|
constraints: [],
|
|
|
|
parameters,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
// Create default feature strategy parameter values from a strategy definition.
|
|
|
|
const createFeatureStrategyParameterValue = (
|
|
|
|
featureId: string,
|
|
|
|
parameter: IStrategyParameter
|
|
|
|
): string => {
|
|
|
|
if (
|
|
|
|
parameter.name === 'rollout' ||
|
|
|
|
parameter.name === 'percentage' ||
|
|
|
|
parameter.type === 'percentage'
|
|
|
|
) {
|
|
|
|
return '50';
|
|
|
|
}
|
|
|
|
|
|
|
|
if (parameter.name === 'stickiness') {
|
2023-03-10 11:28:02 +01:00
|
|
|
return '';
|
2022-08-04 13:34:30 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
if (parameter.name === 'groupId') {
|
|
|
|
return featureId;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (parameter.type === 'boolean') {
|
|
|
|
return 'false';
|
|
|
|
}
|
|
|
|
|
|
|
|
return '';
|
|
|
|
};
|