我是 rego 代码的新手,并编写了一条规则来检查员工姓名是否出现在批准的员工列表中。如果没有,它应该打印出不在列表中的员工。这是我给出的输入:
{“valid_employee_names”:{“first_name.2113690404”:“emp_Maria”、“first_name.2641279496”:“emp_Rosie”、“first_name.3921413181”:“emp_Shaun”、“first_name.588579514”:“emp_John”}、“destroy” : 错误的 }
这是rego规则:
valid_name := {i: Reason |
check_list := {["emp_John","emp_Monika","emp_Cindy","emp_Katie","emp_Kein"]}
doc = input[i]; i="valid_employee_names"
key_ids := [k | doc[k]; startswith(k, "first_name.")]
resource := {
doc[k] : doc[replace(k, ".key", ".value")] | key_ids[_] == k
}
emp_name := [m | resource[m]; startswith(m, "emp_")]
list := {x| x:=check_list[_]}
not(list[emp_name])
Reason := sprintf("Employees not on record found - %v . :: ", emp_name)
}
我总是得到与未记录在案的员工相同的输出。谁能指出我需要更正/更新的内容?
谢谢!