"""Cypher for FingerprintRule operations.""" GET_RULES = """ MATCH (obj:{obj_type})-[rel:{rule_rel}]->(rule:FingerprintRule) WHERE obj.id = $obj_id RETURN rel, rule """ GET_BULK_RULES = """ UNWIND $obj_ids AS obj_id MATCH (obj:{obj_type} {{id: obj_id}})-[rel:{rule_rel}]->(rule:FingerprintRule) RETURN obj, COLLECT( {{ rel: {{createdAt: rel.createdAt, lastModifiedAt: rel.lastModifiedAt, start:rel.start, end:rel.end, lastModifiedBy: rel.lastModifiedBy, createdBy:rel.createdBy, id:elementId(rel) }}, rule: properties(rule) }} ) AS details """ GET_BULK_RULES_OLD = """ MATCH (obj:{obj_type})-[rel:{rule_rel}]->(rule:FingerprintRule) WHERE obj.id IN $obj_ids RETURN obj, [ x IN COLLECT({{ rel: rel, rule: rule }}) ] AS details """ CREATE_RULE = """ MATCH(obj:{obj_type}),(rule:FingerprintRule) WHERE obj.id = $obj_id AND rule.territory = $territory AND rule.service = $service AND rule.policy = $policy CREATE (obj)-[rel:{rule_rel}]->(rule) SET rel.start = datetime($start), rel.end = datetime($end), rel.createdAt = datetime(), rel.createdBy = $created_by, rel.lastModifiedAt = datetime(), rel.lastModifiedBy = $created_by RETURN rel """ DELETE_RULES = """ MATCH(obj:{obj_type})-[rel:{rule_rel}]->(rule:FingerprintRule) WHERE obj.id = $obj_id AND elementId(rel) IN $rel_ids SET rel.lastModifiedAt = datetime(), rel.lastModifiedBy = $modified_by WITH rel CALL apoc.refactor.setType(rel, '{deleted_rule_rel}') YIELD output RETURN output """