pub fn parse_triggers(
obj: &Map<String, Value>,
owner: &str,
fields: &HashMap<String, FieldDef>,
) -> Result<Triggers, String>Expand description
解析并校验 schema 顶层的 triggers;任一项非法 → Err(零静默)。
校验清单(全部命中即 Err):
triggers非对象;- 事件键不在
EVENTS; - 事件值非数组 / 元素非对象;
into/op/data(命令式)与fnRef(回调式)互斥且必居其一;op不在OPS;- 命令式缺
data(op=remove相反:出现data即 Err),或op=update/op=remove缺condition; onFields非字符串数组,或字段未在fields中声明($前缀键除外);when非对象;出现cascade键(首批不支持级联);- 命令式
data的键未在目标 schema 中声明(在展开期校验,见command::triggers); schedule事件缺cron/ cron 非法,或 body/when 出现{{root./{{before.(schedule 无 root/before 上下文,只允许{{now}});非schedule事件出现cron键。