import * as Calculators from '../calculators' import { BusinessExceptionError } from '../../../errors/business_exception.error' import { CompetitionCategories } from '../../../models/ranking/competition/enums/categories.enum' export class CalculatorFactory { static build(category: CompetitionCategories): Calculators.ScoreCalculator { switch (category) { case CompetitionCategories.DECREASE_BODY_FAT: return Calculators.DecreaseBodyFatCalculator case CompetitionCategories.DECREASE_VISCERAL_FAT: return Calculators.DecreaseVisceralFatCalculator case CompetitionCategories.INCREASE_LEAN_MASS: return Calculators.IncreaseLeanMassCalculator case CompetitionCategories.DECREASE_ACTUAL_WEIGHT: return Calculators.DecreaseActualWeightCalculator default: throw new BusinessExceptionError(`Unknown category ${category}`) } } }