def create_or_update_rule()

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