in src/core/fraud_detector_utils.py [0:0]
def create_or_update_rule(self, detector_name: str, detector_rule: DetectorRuleBase):
"""
:param detector_name: The name of the detector to attach the rule to
:param detector_rule: An implementation of the detector rule base class
:return:
"""
rule_version = self._get_max_rule_version(detector_name, detector_rule.rule_id)
if rule_version:
rule_version = rule_version
# Rule exists so update..
self._logger.info("Rule id {} exists, updating ..".format(detector_rule.rule_id))
resp = self.fraud_detector_client.update_rule_version(rule={"ruleId": detector_rule.rule_id,
"detectorId": detector_name,
"ruleVersion": str(int(rule_version))
},
description=detector_rule.description,
expression=detector_rule.get_rule_expression(),
language='DETECTORPL',
outcomes=detector_rule.outcomes)
else:
# Rule doesnt exists
self._logger.info("No rule found. Creating rule with id {}".format(detector_rule.rule_id))
resp = self.fraud_detector_client.create_rule(
ruleId=detector_rule.rule_id,
detectorId=detector_name,
description=detector_rule.description,
expression=detector_rule.get_rule_expression(),
language='DETECTORPL',
outcomes=detector_rule.outcomes)
rule_version = resp["rule"]["ruleVersion"]
result = {
"ruleId": detector_rule.rule_id,
"detectorId": detector_name,
"ruleVersion": str(rule_version)
}
return result